如何按姓名和 phone 号码搜索联系人?
How to search contacts by name and phone number?
我正在使用 Contacts.CONTENT_FILTER_URI 搜索联系人。
Uri contentUri = Uri.withAppendedPath(
ContactsContract.Contacts.CONTENT_FILTER_URI,
Uri.encode(searchString));
searchstring
可以是数字也可以是名字。效果很好。
我唯一的问题是结果不包含联系人 phone 号码。
我知道查询ContactsContract.Data.CONTENT_URI
可以得到。但是,我想找到一个解决方案,只需一次查询即可为我提供联系人姓名和 phone 号码。
您应该使用 Phone.CONTENT_FILTER_URI
而不是 Contacts.CONTENT_FILTER_URI
文档说:
The filter is applied to display names as well as phone numbers.
试试这个:
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);
我正在使用 Contacts.CONTENT_FILTER_URI 搜索联系人。
Uri contentUri = Uri.withAppendedPath(
ContactsContract.Contacts.CONTENT_FILTER_URI,
Uri.encode(searchString));
searchstring
可以是数字也可以是名字。效果很好。
我唯一的问题是结果不包含联系人 phone 号码。
我知道查询ContactsContract.Data.CONTENT_URI
可以得到。但是,我想找到一个解决方案,只需一次查询即可为我提供联系人姓名和 phone 号码。
您应该使用 Phone.CONTENT_FILTER_URI
而不是 Contacts.CONTENT_FILTER_URI
文档说:
The filter is applied to display names as well as phone numbers.
试试这个:
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);