11

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

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

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

提前致谢。

4

2 回答 2

16

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

    Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);
    Uri res = ContactsContract.Contacts.lookupContact(getContentResolver(), lookupUri);
于 2010-09-29T12:52:23.787 回答
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。

于 2011-04-27T09:29:25.257 回答