所以我有一个问题..
我通过以下方式接收联系人列表:
mContentResolver.query(Contacts.CONTENT_URI, CONTACTS_PROJECTION, null, null, null);
并且对于每个联系人,我通过执行以下操作提取查找密钥和联系人ID:
String lookupKey = cursor.getString(ContactsColumns.LOOKUP_KEY);
int contactId = cursor.getInt(ContactsColumns._ID);
鉴于我可以从内容目录中获取实体:
Uri contactUri = Contacts.getLookupUri(contactId, lookupKey);
contactUri = Uri.withAppendedPath(contactUri, Entity.CONTENT_DIRECTORY);
Cursor detailCursor = mContentResolver
.query(contactUri, ENTITY_PROJECTION, SELECTION_ENTITY, SELECTION_ARGS_ENTITY, null);
到目前为止一切顺利。当我尝试仅提供其查找键来获取单个联系人时,问题就开始了。我通过执行以下操作来获取联系人光标:
Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);
Uri res = ContactsContract.Contacts.lookupContact(mContentResolver, lookupUri);
Cursor cursor = mContentResolver.query(res, CONTACTS_PROJECTION, null, null, null);
现在的问题是我获得了不同的联系人ID。联系信息属于同一个实际人,但不同。可能有多个联系人连接到查找键。
因此,当我现在尝试接收实体数据时,由于不同的联系人ID而不会获得相同的结果,而联系人ID又会生成不同的内容uri。
例如, 在第一种情况下,我得到:
content://com.android.contacts/contacts/lookup/<lookupkey>/1008/entities
在第二种情况下,我得到了:
content://com.android.contacts/contacts/lookup/<lookupkey>/511/entities
我应该如何使用查找键以获得与我首先获得查找键相同的联系人?
谢谢!