独特联系人 ID

11

安卓是否为每个联系人分配唯一的常量ID?
如果没有,有办法分配这样的信息给它们吗? 我能将此ID同步到谷歌通讯录吗?

谢谢。

4个回答

4

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

如果您希望在设备、平台上保持联系人ID的一致性,则可以使用仅已同步的Google联系人或编写自己的解决方案代码以生成唯一的ID。例如获取联系人号码、姓名等的哈希值,这些信息很少更改。


3

在安卓联系人中有两种类型的联系人ID。

一种是联系人ID(CONTACT_ID),另一种是原始联系人ID(RAW_CONTACT_ID)

请参考此教程。 安卓联系人

希望这能帮到您。


2
但是,如果我将它们同步到与我的 Google 帐户链接的其他设备上,我不认为这些 ID 将保持不变。 是否有一种方法可以将用户定义的数据与我的 Google 联系人同步? - user1651653
当然不是。它仅限于 Android 设备内的唯一标识符。 - Rushabh Patel
6
这并没有回答问题:安卓是否为每个联系人分配唯一的恒定ID?是还是不是? - Simon

1
ContactsContract.RawContacts    SOURCE_ID

一个字符串值,用于唯一标识该原始联系人所在的账户。当同步适配器创建新的原始联系人时,应将此列设置为服务器对原始联系人的唯一ID。当Android应用程序创建新的原始联系人时,应将此列留空。这会向同步适配器发出信号,表明它应在服务器上创建一个新的原始联系人,并获取SOURCE_ID的值。特别地,源ID必须对于每个帐户类型是唯一的,并且应在同步中保持稳定。
唯一:对于帐户的每个原始联系人都必须有自己的源ID。如果您不执行此操作,则会在联系人应用程序中出现问题。请注意,同一帐户类型的两个原始联系人可能具有相同的源ID。例如,对于emily.dickinson@gmail.com帐户的原始联系人“Thomas Higginson”可以与emilyd@gmail.com帐户的原始联系人“Thomas Higginson”具有相同的源ID。稳定:源ID是在线服务数据的永久部分,用于原始联系人。例如,如果用户从应用程序设置中清除联系人存储并重新同步,则恢复的原始联系人应具有与以前相同的源ID。如果您不执行此操作,则快捷方式将停止工作。
这里是官方文档:联系人提供程序

-2

为此目的,确切地有LOOKUP_KEY列。

虽然文档很少,但它似乎在新安装和不同手机之间是持久的。

文档:LOOKUP_KEY


我认为这不准确,根据我的实验,看起来这个键会在联系人更新时发生变化。它也是一个组合键,所以如果联系人与 Skype 联系人合并,那么该键将会改变。 - Calin
是的,它是由组成部分构成的,但其各个部分仍然保持不变。您可以使用部分之间的点将其拆分,并再次匹配这些部分。 你是如何编辑联系人的?当更改姓名、号码和邮件时,查找仍然对我保持不变... - MisteriosM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接