如何在同步适配器onPerformSync方法中访问新添加的联系人?

时间:2016-04-09 14:38:33

标签: android android-syncadapter

当我将联系人添加到我的电话簿时,会触发同步适配器onPerformSync()方法。但我无法弄清楚如何在该方法中检索新添加的联系人详细信息。请帮我一些指导和代码片段。感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

您帐户的联系人存储在RawContacts表格中。数据(例如电话号码,电子邮件地址)存储在Data表中(RAW_CONTACT_ID指向_ID表中该联系人的行RawContacts。< / p>

要检测新联系人,您的同步适配器需要维护RawContacts表中的SOURCE_ID字段。

文档说明了SOURCE_ID(在顶部的字段列中):

  

将此行唯一标识为其源帐户的字符串。通常,它是在插入原始触点时设置的,之后从不更改。 一个值得注意的例外是原始联系人:它将拥有帐户名称和类型(可能还有数据集),但没有源ID 。这向同步适配器指示需要在服务器端创建新联系人,并将其ID存储在电话上相应的SOURCE_ID字段中。

因此,您的同步适配器应查找属于您的帐户类型且空SOURCE_ID的联系人。联系人同步后,必须将SOURCE_ID设置为标识新联系人的(非空)值。

当您从服务器同步新联系人时,您需要在Android上插入新联系人时设置SOURCE_ID。如果不这样做,将导致重复(因为联系人将在下次同步时作为新联系人同步回服务器。)