Android:使用查找键管理联系人

时间:2010-09-20 18:18:39

标签: android

我目前正在编写一个允许保存草稿的应用程序(使用android版本> = 2.0)。每个草稿都通过ContactsContract.Contacts.LOOKUP_KEY与联系人相关联。 我的问题是,如果我更改联系人的姓名,查找键也会更改。这是这样的吗?

那么我需要一个查找键呢?我认为查找键永远不会改变,现在它无论如何都会改变。我对这种行为感到困惑......

有人可以向我解释如何永久链接到联系人吗?我应该使用ID而不是查找键吗?

提前致谢。

2 个答案:

答案 0 :(得分:15)

据我了解,查找键是结构化/分层键。因此严格来说,它可以改变,但仍然可以通过使用适当的方法来找回你的联系人:

    Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);
    Uri res = ContactsContract.Contacts.lookupContact(getContentResolver(), lookupUri);

答案 1 :(得分:4)

编辑:

为什么不通过原始联系人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而烦恼。