在聯繫人的頂部ID,Android也得到了LOOK_UP的關鍵。由於id的聯繫人可以更改,您可以獲取用戶uri,使用LOOK_UP鍵。Android聯繫人:查找鍵是如何工作的?
public static Uri lookupContactUri(String lookup, Context context){
ContentResolver contentResolver = context.getContentResolver();
Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookup);
return ContactsContract.Contacts.lookupContact(contentResolver, lookupUri);
}
但它是如何工作的? Contacts.lookupContact
的源代碼沒有詳細介紹實際的實現。那麼任何人都可以解釋他們是如何設法解決這個問題的?
/**
* Computes a content URI (see {@link #CONTENT_URI}) given a lookup URI.
* <p>
* Returns null if the contact cannot be found.
*/
public static Uri lookupContact(ContentResolver resolver, Uri lookupUri) {
if (lookupUri == null) {
return null;
}
Cursor c = resolver.query(lookupUri, new String[]{Contacts._ID}, null, null, null);
if (c == null) {
return null;
}
try {
if (c.moveToFirst()) {
long contactId = c.getLong(0);
return ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
}
} finally {
c.close();
}
return null;
}
我測試的另一件事,使用ContactsContract.AggregationExceptions合併兩個觸點,然後採石爲接觸URI。兩個LOOK_UP鍵都會產生與預期相同的聯繫人URI。
那他們怎麼做呢?