2012-02-06 56 views
1

我有一个应用程序在市场上存储的细节与联系人使用联系人选择器。什么是“正确”的方式来存储联系人的ID在Android

cursor.getColumnIndex(ContactsContract.Contacts._ID) 

我发现,使用这个是确定的,直到有人闪现出新的ROM或有新的手机,然后一切:当我从联系人选择器返回我已经使用以下获得接触过该ID已经改变。

我看了一下android文档,并且看到了使用ContactsContract.Contacts.LOOKUP_KEY的引用,但是描述让我感到困惑:“一个不透明的值,它包含关于如何查找联系人的提示,如果其行标识更改为同步或聚合的结果“。

那么我应该使用什么来存储联系人ID?

+0

本地数据库可能为您的应用程序?并在闪烁前进行备份? – 2012-02-06 11:14:20

+0

存储'LOOKUP_KEY'并记住阅读(&执行)[备份代理](http://developer.android.com/guide/topics/data/backup.html) - 除非您真的感觉*喜欢维护服务器为自己永久备份。 – Jens 2012-02-06 12:59:15

回答

1

查找键是联系人的正确参考。

Contacts Provider/Contacts:

的ContactsContract.Contacts表还具有列LOOKUP_KEY 这是一个“永久”链接到联系人行。由于联系人自动维护联系人,因此可能会更改联系人的行_ID值以响应聚合或同步。即使此 发生,内容URI CONTENT_LOOKUP_URI与联系人的 LOOKUP_KEY仍将指向联系人行,因此您可以使用LOOKUP_KEY维护与“最喜欢的”联系人等的链接。 此列有其自己的格式,与 _ID列的格式无关。

相关问题