連絡先の上にid、また、LOOK_UPキーを手に入れました。 連絡先のIDが変更できるので、LOOK_UPキーを使用して、ユーザーURIを取得できます。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を使用して2人の連絡先をマージして、連絡先URIのために採石されます。 LOOK_UPの両方のキーが、期待どおり同じ連絡先URIで生成されます。
どのように彼らはそれをやっていますか?