代码之家  ›  专栏  ›  技术社区  ›  dotcs

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

  •  10
  • dotcs  · 技术社区  · 14 年前

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

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

    有人能告诉我如何永久链接到联系人吗?我应该使用ID而不是查找键吗?

    事先谢谢。

    2 回复  |  直到 9 年前
        1
  •  15
  •   Flow Matt McDonald    11 年前

    据我所知,查找键是一个结构化/层次结构键。因此,严格地说,它可以改变,但仍然被用来寻找你的联系回来,通过使用适当的方法:

        Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);
        Uri res = ContactsContract.Contacts.lookupContact(getContentResolver(), lookupUri);
    
        2
  •  4
  •   erakitin    9 年前

    编辑时间:

    为什么不使用原始联系人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)
    

    当两个ID都存在于URI中时,系统将首先尝试使用长ID。这是一个非常快速的查询。如果找不到联系人,或者找到的联系人具有错误的查找键,内容提供程序将分析查找键并跟踪组成的原始联系人。如果你的应用程序批量处理联系人,你应该维护这两个ID。如果你的应用程序在每个用户操作一个联系人的情况下工作,你可能不需要费心存储长ID。