我有一个应用程序可以获取设备上联系人的ContactsContract.Contacts.LOOKUP_KEY
并将其保存在应用程序Db上。
在阅读this页后,我认为我可以使用LOOKUP_KEY
来唯一标识联系人,即使在编辑联系人时(例如在编辑联系人姓名后)。
实际上我在编辑了一个联系人后发现它的LOOKUP_KEY
发生了变化,因此我无法再使用我保存在应用数据库中的LOOKUP_KEY
。
我的问题是:有没有办法在ContactsContract.Contacts
上首次在设备上创建一个联系人,直到从设备上删除该联系人?
谢谢
答案 0 :(得分:1)
每个名为_ID
的联系人的行ID(主键)。
答案 1 :(得分:1)
LOOKUP_KEY
本身不能用作密钥,而应与联系人的_ID
一起使用,以形成完整的lookupUri
。
然后可以使用lookupUri
在CONTENT_LOOKUP_URI
表中查找联系人。
CONTENT_LOOKUP_URI
基本上首先按_ID
查找联系人,如果找不到,或_ID
似乎是错误的联系人,则使用提示 LOOKUP_KEY
部分尝试为您找到正确的联系人。
此表的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。
包含提示的不透明值,了解如何查找联系人 由于同步或聚合,行ID已更改。