Android 保证引用联系人

Android Guaranteed Reference to a Contact

我有一个应用程序需要维护对设备上某些联系人的持久引用。我曾经通过存储 ContactsContract.Contact._ID 来做到这一点,但我最近遇到了 _ID 会发生变化的问题,我无法再引用联系人。

我转而使用 ContactsContract.Contact.LOOKUP_KEY,我认为这是一种独特的、持续的引用联系人的方式。但是,我收到报告称某些设备上的某些联系人的 LOOKUP_KEYnull

我对LOOKUP_KEY的理解有误吗?

  1. 可以为空吗?
  2. 能改吗?
  3. 如果对 1 或 2 的回答是肯定的,是否有保证存储联系人参考的方法?

在联系人数据库中,我们有许多 table 用于保存与联系人相关的信息,例如 ContactsDataMimetypeRawContacts, Accounts

ContactsContract.Contact._ID在更新、合并或同步到服务器时发生变化,ContactsContract.Contact._ID会不时发生变化,您需要使用ContactsContract.RawContacts._ID,这将是独一无二,除非删除联系人,否则不会更改。

ContactsContract.Contact.LOOKUP_KEY 将不会更改,直到您加入另一个联系人或分离合并的联系人。或者您可以使用 Contacts table 中的列 "name_raw_contact_id",它将始终保持不变。