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 - 按显示名称查找联系人 的相关文章

随机推荐

  • 猜测无界整数

    如果我对你说 我正在想一个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