Android联系人:查找键如何工作?

Android联系人:查找键如何工作?,第1张

概述除了联系人ID之外,Android还获得了LOOK_UP键.由于联系人的ID可以更改,因此您可以使用LOOK_UP键获取用户uri.publicstaticUrilookupContactUri(Stringlookup,Contextcontext){ContentResolvercontentResolver=context.getContentResolver();UrilookupUri=Ur

除了联系人ID之外,Android还获得了LOOK_UP键.由于联系人的ID可以更改,因此您可以使用LOOK_UP键获取用户uri.

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.

那么他们如何做呢?

解决方法:

由于联系人ID可能会不时更改(例如,当联系人同步被破坏并且需要从服务器重新同步联系人时),AndroID引入了LookupKeys和LookupUris的概念.

LookupKey是一个不透明的值,可以由Contacts框架在内部将其转换为一组字段:contact-ID,raw-contact-ID,primary-display-names等.

每当您尝试通过LookupUri访问联系人时,系统会从Uri中提取LookupKey,尝试访问contact-ID,并将其他字段(原始ID,姓名等)与找到的联系人进行比较(如果有)似乎是正确的联系人,它将返回它.
如果未找到联系人ID,或者系统检测到它是错误的联系人,则会对所有联系人进行查询以找到正确的联系人(使用存储在该键上的辅助字段).

因此,LookupKey充当一种快速方法,可以返回联系人ID,或在发生不良情况时进行搜索.

总结

以上是内存溢出为你收集整理的Android联系人:查找键如何工作?全部内容,希望文章能够帮你解决Android联系人:查找键如何工作?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1120967.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存