我有一个应用程序,它可以获取设备上联系人的ContactsContract.Contacts.LOOKUP_KEY
并将其保存在应用程序 DB 上。
阅读此页面后,我认为我可以使用LOOKUP_KEY
来唯一标识联系人,即使在编辑联系人时(例如在编辑联系人姓名后(。
实际上,我看到编辑联系人后,其LOOKUP_KEY
发生了变化,因此我无法再使用保存在应用程序DB上的LOOKUP_KEY
。
我的问题是:有没有办法唯一标识ContactsContract.Contacts
上的联系人,从第一次在设备上创建联系人到从设备中删除联系人?
谢谢
LOOKUP_KEY
本身并不意味着用作密钥,而是应与联系人的_ID
一起使用以形成完整的lookupUri
。
然后,可以使用lookupUri
在CONTENT_LOOKUP_URI
表中查找联系人。CONTENT_LOOKUP_URI
基本上首先通过_ID
查找联系人,如果找不到它,或者_ID
似乎是错误的联系人,它会使用LOOKUP_KEY
部分的提示来尝试为您追踪正确的联系人。
从CONTENT_LOOKUP_URI
此表的 content://样式 URI,应用于创建 快捷方式或以其他方式创建指向联系人的长期链接。此 URI 应始终跟有"/"和联系人的LOOKUP_KEY。它 还可以选择附加"/"和最后已知的联系人 ID 然后。这种"完整"格式是一个重要的优化,是 强烈推荐。
只要联系人的行 ID 保持不变,此 URI 就是 相当于CONTENT_URI。如果联系人的行 ID 因此而更改 的同步或聚合,此 URI 将使用 间接信息(同步 ID 或组成原始联系人(。
查找键应附加未编码 - 它存储在编码中 窗体,准备在 URI 中使用。
从getLookupUri(long contactId, String lookupKey)
使用给定的_ID构建CONTENT_LOOKUP_URI查找 Uri 和 LOOKUP_KEY。
从LOOKUP_KEY
一个不透明值,其中包含有关如何查找联系人的提示,如果 由于同步或聚合而更改的行 ID。
名为_ID
的每个联系人的行 ID(主键(。