我正在编写一款应用程序,可以保存草稿(使用android版本 >= 2.0)。每个草稿都通过 ContactsContract.Contacts.LOOKUP_KEY
与联系人相关联。
我的问题是,如果我更改联系人的名称,则查找键也会更改。这就是它的工作方式吗?
那么我需要查找键的目的是什么?我认为查找键永远不会变化,但现在它已经发生了变化。我对这种行为感到困惑...
有人能解释一下如何永久链接到联系人吗?我应该使用ID而不是查找键吗?
提前感谢。
我正在编写一款应用程序,可以保存草稿(使用android版本 >= 2.0)。每个草稿都通过 ContactsContract.Contacts.LOOKUP_KEY
与联系人相关联。
我的问题是,如果我更改联系人的名称,则查找键也会更改。这就是它的工作方式吗?
那么我需要查找键的目的是什么?我认为查找键永远不会变化,但现在它已经发生了变化。我对这种行为感到困惑...
有人能解释一下如何永久链接到联系人吗?我应该使用ID而不是查找键吗?
提前感谢。
我的理解是查找键是一种结构化/分层键。因此严格来说,它可以更改,但仍然可以使用适当的方法找回您的联系人:
Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);
Uri res = ContactsContract.Contacts.lookupContact(getContentResolver(), lookupUri);
编辑:
为什么不使用原始联系人ID查找联系人ID或查找键?这是2.1版本中的错误。
未同步联系人的查找键基于联系人姓名。
http://comments.gmane.org/gmane.comp.handhelds.android.devel/130677
==================================================================
我还没有尝试,但我找到了一些关于此的信息。
http://developer.android.com/resources/articles/contacts.html
....
如果您的应用程序对性能有要求,则可能需要存储联系人的查找和长ID,并从这两个ID构建查找URI,如下所示:
Uri lookupUri = getLookupUri(contactId, lookupKey)
当URI中同时存在两个ID时,系统将首先尝试使用长ID。这是一个非常快速的查询。如果找不到联系人,或者找到的联系人具有错误的查找键,则内容提供程序将解析查找键并跟踪相关的原始联系人。如果您的应用程序批量处理联系人,则应维护两个ID。如果您的应用程序仅处理单个联系人,请不必费心存储长ID。