0

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

我转而使用ContactsContract.Contact.LOOKUP_KEY我理解的一种独特的、不变的方式来引用联系人。但是,我收到报告称某些设备上的某些联系人LOOKUP_KEY具有null.

我对 的理解错了LOOKUP_KEY吗?

  1. 可以为空吗?
  2. 能改变吗?
  3. 如果 1 或 2 是肯定的,是否有保证的方法来存储对联系人的引用?
4

1 回答 1

1

在联系人数据库中,我们有许多表,我们在其中保存与联系人相关的信息,例如ContactsDataMimetypeRawContactsAccounts

ContactsContract.Contact._ID更新、合并或同步到服务器时的变化,ContactsContract.Contact._ID会随着时间的推移而变化,您需要使用ContactsContract.RawContacts._ID它是唯一的,并且除非删除联系人,否则不会改变。

ContactsContract.Contact.LOOKUP_KEY 将不会更改,直到您将联系人加入另一个联系人或分离合并的联系人。或者您可以使用联系人表中的列“name_raw_contact_id”,该列始终相同且不会更改。

于 2015-06-17T06:12:51.977 回答