2012-09-06 104 views
9

Android是否为每个联系人分配唯一的常量ID?
如果没有,是否有办法将这些信息分配给他们? 我可以将此ID同步到Google联系人吗?唯一联系人ID

谢谢。

回答

4

在android联系人中有两种类型的contact id。

一个是CONTACT_ID其他 ANS是RAW_CONTACT_ID

请参阅本教程。 ANDROID CONTACTS

希望这会帮助你。

+0

但我不认为这些ID将保持不变,如果我将它们同步到链接到我的谷歌帐户的其他设备。 有没有办法将用户定义的数据与我的谷歌联系人同步? – user1651653

+0

当然不是。它只是android设备中的唯一ID。 –

+0

这不回答这个问题:Android是否为每个联系人分配唯一的常量ID?是或否? – Simon

4

您只能检索同步Google联系人的唯一ID。在其他情况下,您可能会得到不同的ID,因为每当用户重置或重新导入联系人到电话簿时,每个联系人的Android raw_id都会更改。

如果您希望contact-ids与设备和平台保持一致,那么您可以只使用同步的Google联系人,也可以在代码中编写自己的工作以生成唯一的id。取得联系的电话号码的哈希值,名称等,当同步适配器创建一个新的原料,其很少改变

0
ContactsContract.RawContacts SOURCE_ID 

唯一标识此生接触到其创建

的 帐户的字符串值联系人,此列应设为 设置为服务器的原始联系人的唯一ID。当Android 应用程序创建新的原始联系人时,应用程序应将此列留空 。这表示它应该在同步适配器上创建 服务器上的新的原始联系人,并获取SOURCE_ID的值。在 尤其源ID必须为每个帐户类型是唯一的, 应在整个同步保持稳定:

独特之处:一个帐户每个原始联系人都必须有它自己的源ID。 如果您不强制执行此操作,则会在联系人 应用程序中导致问题。请注意,同一帐户类型 的两个原始联系人可能具有相同的源ID。例如,允许账户[email protected]的原始联系人“Thomas Higginson”与 账户[email protected]的原始联系人“Thomas Higginson”具有相同的源ID。稳定:源ID是 原始联系人的在线服务数据的永久部分。例如,如果 用户从应用设置中清除联系人存储并重新同步,则恢复的原始联系人应具有与以前相同的源ID。如果 您不强制执行此操作,快捷方式将停止工作。

下面是官方文档:Contacts Provider