如何按姓名和电话号码搜索联系人?

Posted

技术标签:

【中文标题】如何按姓名和电话号码搜索联系人?【英文标题】:How to search contacts by name and phone number? 【发布时间】:2021-05-14 13:11:15 【问题描述】:

我正在使用 Contacts.CONTENT_FILTER_URI 来搜索联系人。

Uri contentUri = Uri.withAppendedPath(
                ContactsContract.Contacts.CONTENT_FILTER_URI,
                Uri.encode(searchString));

searchstring 可以是数字或名称。效果很好。 我唯一的问题是结果不包含联系电话号码。

我知道我可以通过查询ContactsContract.Data.CONTENT_URI 得到它。不过,我想找到一个解决方案,只需一次查询即可为我提供联系人姓名和电话号码。

【问题讨论】:

【参考方案1】:

您应该使用Phone.CONTENT_FILTER_URI 而不是Contacts.CONTENT_FILTER_URI

文档说:

过滤器适用于显示姓名和电话号码。

试试这个:

Uri filterUri = Uri.withAppendedPath(Phone.CONTENT_FILTER_URI, Uri.encode(searchString));
String[] projection = new String[] Phone.CONTACT_ID, Phone.DISPLAY_NAME, Phone.NUMBER ;
Cursor cur = getContentResolver().query(filterUri, projection, null, null, null);

【讨论】:

以上是关于如何按姓名和电话号码搜索联系人?的主要内容,如果未能解决你的问题,请参考以下文章

具有搜索功能的联系人选择器

如何使用他/她的号码获取联系人姓名

如何仅使用他们的电话号码获取联系人姓名?

从 Google People API 搜索中获取姓名和电话号码

按姓名搜索联系人

如何只获取联系人的手机号码