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

问题描述

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

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

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

我知道我可以通过查询 ContactsContract.Data.CONTENT_URI 来获取它。但是,我想找到一种解决方案,可以通过单个查询为我提供联系人姓名和电话号码。

解决方法

您应该使用 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);

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...