有没有办法让所有设备联系人(聚合,而不是原始)与联系人ID,拳头/姓氏和联系人图片?
目前我使用的是以下代码,但它不会返回结构化名称:
private static final String CONTACTS_SORT_ORDER = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
// all contacts
public final String[] columns = {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.PHOTO_THUMBNAIL_URI};
c = contentResolver.query(Contacts.CONTENT_URI, null, null, null, CONTACTS_SORT_ORDER);
由于
答案 0 :(得分:3)
无法通过一个查询获取所需数据。对于每个联系人ID,您必须查询其数据目录:
Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
Uri dataUri = Uri.withAppendedPath(contactUri, Contacts.Data.CONTENT_DIRECTORY);
然后,您应针对此URI运行查询,按MIMETYPE
过滤StructuredName.CONTENT_ITEM_TYPE
以获取给定ID的StructuredName
。
Uri dataUri = Uri.withAppendedPath(contactUri, Contacts.Data.CONTENT_DIRECTORY);
Cursor nameCursor = getActivity().getContentResolver().query(
dataUri,
null,
Data.MIMETYPE+"=?",
new String[]{ StructuredName.CONTENT_ITEM_TYPE },
null);