问题描述
我正在使用 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);