Android - 按显示名称查找联系人

2024-03-03

我正在尝试按显示名称查找联系人。目标是打开此联系人并向其中添加更多数据(特别是更多电话号码),但我什至很难找到我想要更新的联系人。

这是我正在使用的代码:

    public static String findContact(Context context) {

    ContentResolver contentResolver = context.getContentResolver();
    Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI;
    String[] projection = new String[] { PhoneLookup._ID };
    String selection = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " = ?";
    String[] selectionArguments = { "John Johnson" };
    Cursor cursor = contentResolver.query(uri, projection, selection, selectionArguments, null);

    if (cursor != null) {
        while (cursor.moveToNext()) {
            return cursor.getString(0);
        }
    }
    return "John Johnson not found";
}

我确实有一个名为“John Johnson”的联系人,但该方法始终返回“未找到”。我还尝试过搜索只有一个名字的联系人,所以这没有什么区别。

我怀疑 uri、选择或选择参数有问题,因为我找不到任何在线搜索具有给定显示名称的联系人的示例,并且显示名称似乎是一种特殊类型的信息,不同于例如一个电话号码。

我有什么想法可以找到约翰·约翰逊吗?


更新:我找到了如何通过显示名称查找联系人:

        ContentResolver contentResolver = context.getContentResolver();
    Uri uri = Data.CONTENT_URI;
    String[] projection = new String[] { PhoneLookup._ID };
    String selection = StructuredName.DISPLAY_NAME + " = ?";
    String[] selectionArguments = { "John Johnson" };
    Cursor cursor = contentResolver.query(uri, projection, selection, selectionArguments, null);

    if (cursor != null) {
        while (cursor.moveToNext()) {
            return cursor.getString(0);
        }
    }
    return "John Johnson not found";

此代码返回显示名称为“John Johnson”的第一个联系人的联系人 ID。在我的原始代码中,我的 uri 错误并且查询中的选择错误。


我认为这个问题可能是由你设置的投影引起的。投影用于告诉 android 你要查询哪一列数据,然后你只给出 id 列,这样显示名称就不会返回。尝试将投影移除,看看是否有效。

-- Cursor cursor = contentResolver.query(uri, projection, selection, selectionArguments, null);
++ Cursor cursor = contentResolver.query(uri, null, selection, selectionArguments, null);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android - 按显示名称查找联系人 的相关文章

  • BottomNavigationView - 如何获取选定的菜单项?

    我使用BottomNavigationView来切换片段 如何获取当前选定的菜单项 以防止重新打开片段 BottomNavigationView bottomNavigationView BottomNavigationView findV
  • 在应用程序简历中隐藏软键盘

    我有一个 Android 应用程序 使用 Xamarin 用 C 编写 我已将应用程序简化为包含 TextView 和用于横幅广告的 Google admod AdView 的 LinearLayout 我不希望软键盘出现在应用程序中 这不
  • getItem 与 getItemAtPosition

    有两种方法可以获取列表视图中的选定项目 list getAdapter getItem position list getItemAtPosition position 我的问题是 哪一种是首选的做法 我见过人们同时使用这两种方法 您可以使
  • Android 应用程序在后台运行时保存数据

    目前我正在开发 xmmp 客户端 当应用程序位于前台时 该客户端工作得很好 但由于事实上 当应用程序处于后台时 我在 Application 类中保存了大量数据 复杂的 ArrayList 字符串和布尔值作为公共静态 每个字段都被垃圾收集
  • 导航组件重复 NavArgs 的问题

    我有一个片段 class SomeFragment private val args by navArgs
  • 如何从 SQLite 获取记录总数

    我正在尝试从 Sqlite DB 获取行的总数 以下是我想要做的代码片段 我不知道我在这里做错了什么 public static int getTotalCount Context context Cursor c null try c g
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • Android 原理图内容提供程序库配置?

    Jake Wharton 在最近的一次演讲中提到了这个库 它看起来是避免大量样板文件的好方法 所以我尝试了一下 但没有任何成功 https github com SimonVT schematic https github com Simo
  • Android 版 Robotium - solo.searchText () 不起作用

    我在使用 Robotium 时遇到 searchText 函数问题 我正在寻找这个字符串
  • minHeight 有什么作用吗?

    在附图中 我希望按钮列与图像的高度相匹配 但我也希望按钮列有一个最小高度 它正确匹配图像的高度 但不遵守 minHeight 并且会使按钮向下滑动 我正在为按钮列设置这些属性
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • Android Studio:无法启动守护进程

    当我尝试在 Android Studio 中导入 gradle 项目时 遇到以下错误 Unable to start the daemon process This problem might be caused by incorrect
  • 调节麦克风录音音量

    我们正在尝试调整录音时的音量级别 麦克风似乎非常敏感 会接收到很多静电 我们查看了 setVolumeControlStream 但找不到传入其中来控制麦克风的流 将您的音频源设置为 MIC using MediaRecorder Audi
  • 如何将设备连接到Eclipse?

    我无法解决这个简单的问题 我正在尝试通过 USB 电缆将我的设备连接到 Eclipse 在我的 PC 上 我已经安装了 Eclipse 和 Android SDK 并且在模拟器上运行该程序运行良好 我已在我的电脑上下载并安装了 Samsun
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • 用于推送通知的设备令牌

    我正在实施推送通知服务 我需要创建一个数据库来存储 4 个移动平台的所有设备令牌 我想根据他们的平台 iOS Android BlackBerry WP7 来组织它们 但是有什么方法可以区分平台 这样如果我只想向 Android 用户发送消
  • 在 Android 中,如何将字符串从 Activity 传递到 Service?

    任何人都可以告诉如何将字符串或整数从活动传递到服务 我试图传递一个整数 setpossition 4 但它不需要 启动时总是需要 0 Service 我不知道为什么我不能通过使用 Service 实例从 Activity 进行操作 publ
  • 如何删除因 Google Fitness API 7.5.0 添加的权限

    将我的 play services fitness api 从 7 0 0 更新到 7 5 0 后 我注意到当我将新版本上传到 PlayStore 时 它 告诉我正在添加一个新权限和 2 个新功能 我没有这样做 有没有搞错 在做了一些研究来
  • 找到 Android 浏览器中使用的 webkit 版本?

    有没有办法知道某些特定手机上的 Android 浏览器使用的是哪个版本的 webkit 软件 如果有一个您可以浏览以获取该信息的 URL 那就太好了 但任何其他方式也很好 如果你知道 webkit 版本 你就知道 html5 支持多少 至少
  • 在 Google 地图上绘制线条/路径

    我很长一段时间都在忙于寻找如何在 HelloMapView 中的地图上的两个 GPS 点之间画一条线 但没有运气 谁能告诉我该怎么做 假设我使用扩展 MapView 的 HelloMapView 我需要使用叠加层吗 如果是这样 我是否必须重

随机推荐

  • 猜测无界整数

    如果我对你说 我正在想一个0到n之间的数字 我会告诉你你的猜测是高还是低 然后你会立即进行二分查找 如果我删除上限怎么办 即我正在考虑一个正整数 你需要猜测它 一种可能的方法是让您猜测 2 4 8 直到您对某些 k 猜测 2 k 并且我说
  • Pod 无法安装软件包(apt-get update 或 apt-get install )

    我发现集群中的 pod 在 exec 到 pod 时无法安装软件包 在调试时我意识到这是由于 etc resolv conf entries The etc resolv conf 其中一个 Pod 的条目是 nameserver 192
  • XMPP 带有支持 X-FACEBOOK-PLATFORM 的 Java Asmack 库

    我正在尝试使用 Smack 库在 Android 上进行 Facebook 聊天 我读过Chat API http developers facebook com docs chat 来自 Facebook 但我不明白如何使用这个库向 Fa
  • 对部分排序的数组进行排序

    我正在尝试对具有以下属性的数组进行排序 它增加到一定程度然后开始减少 然后增加然后减少等等 是否有任何算法可以通过利用部分排序来以低于 nlog n 的复杂度对其进行排序 数组示例 14 19 34 56 36 22 20 7 45 56
  • Python 求和字典列表中元组中的值?

    在我的字典中 每个条目都有一个元组列表 我的python语法可能是错误的 请耐心等待 它看起来像这样 1 2 2 4 3 6 1 7 1 8 3 2 4 1 5 3 1 2 我想对每个条目的元组中的第二个值求和 即 1 10 2 5 我一直
  • 当 TabHost 存在于活动中时,EditText 使用硬键盘失去焦点

    我正在 tabhost 内显示 EditText Tabhost 位于 SherlockFragmentActivity 内部 假设我处于触摸模式 我单击 EditText 以使其获得焦点并开始在其上输入内容 输入 2 3 个字符后 我决定
  • 将 image/jpeg 作为 arraybuffer 或 blob 返回

    我目前正在调用我的 api 它返回一个图像作为image jpeg 我的问题是通过 javascript Angular 调用 url 时 factory资源 我的数组缓冲区为空 另外 字节长度为 0 如果我使用响应类型 或 文本 调用 a
  • 是否有专为创建 REST API 参考文档而设计的 CMS 引擎? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Scala 并行赋值仅在声明中

    Having def f 1 two 3 0 为什么可以 var x y z f but not var i 0 var j hello var k 0 0 use i j k then i j k f expected but found
  • 用于未来更新的 Android 数据库方法

    在 android 中使用 sqlite 数据库的最佳方法是什么 sqlite数据库文件 第一次复制到应用环境中 OR 在代码中创建表 在数据库助手的 onCreate 中 我的数据库有6个表 第一次是空的 我问这个问题是因为我想将来更新我
  • 在 Lollipop 上使用 Android 存储访问框架列出文件时出现错误

    背景 我有一些应用程序大量使用 SD 卡进行文件同步 Kitkat 上的外部 SD 卡访问损坏仍然是一个大问题 但我正在尝试使用 Lollipop 上提供的新 API 为拥有此问题的用户解决此问题 我成功请求并保留了对 SD 卡的权限 并且
  • 尝试用 .then、.fail 和 .reject 打破 jQuery 承诺链

    更新 此问题是 jQuery 1 7 与 1 8 的结果 永远不要在 1 7 中使用 Promise 因为它们不能通过在 a 中返回 Promise 来链接 then 1 8看起来他们并没有搞砸 http jsfiddle net delv
  • 如何在.Net core 3.1版本中以编程方式使用WCF服务

    我有一个 WCF 服务 它是使用 Net框架4 7 现在我必须使用以下命令以编程方式验证和解析 WCF 服务 Net Core 3 1 Web应用程序 without将 WCF 服务添加为服务参考 添加连接服务中的选项Visual Stud
  • Django 的collectstatic 有什么意义?

    在 Django 中 惯例是将应用程序特定的所有静态文件 即 css js 放入名为的文件夹中static 所以结构看起来像这样 mysite manage py mysite gt settings py etc myapp gt mod
  • 如何在实体框架中使用 DateTime.AddDays(x)

    我有这个代码 from pr in e ProgramSetup Include Program Include Program Client where pr DateBegin lt DateTime Now pr DateEnd gt
  • 我该如何修复这个错误? java.lang.OutOfMemoryError(无错误消息)

    构建 apk 时出错 谁收到此错误 我该如何修复此错误 Execution failed for task app packageDebug gt A failure occurred while executing com android
  • 同位素重排方法错误,没有这样的方法

    抱歉 如果我不是第一个 那么同位素重新布局方法有效吗 他们改变了还是我做错了什么 我有一个装有图像的容器 有时我需要用新图像替换图像 并且需要 重新布局 容器 container isotope reLayout 该方法返回 no such
  • Ant 代码未在 Maven 中运行

    这可能是我在 Java 中见过的最奇怪的事情 以下代码 不使用外部库 使用 Ant 完美运行 在 Netbeans 上 在 Windows 7 计算机上 public static void main String args throws
  • Javascript 中如何判断一个对象是否是对象字面量?

    有没有办法在 Javascript 中确定对象是否是使用创建的对象字面量 http www brainonfire net blog javascript object literal namespace 符号或使用构造函数方法 在我看来
  • Android - 按显示名称查找联系人

    我正在尝试按显示名称查找联系人 目标是打开此联系人并向其中添加更多数据 特别是更多电话号码 但我什至很难找到我想要更新的联系人 这是我正在使用的代码 public static String findContact Context cont