当我将联系人添加到我的电话簿时,会触发同步适配器onPerformSync()方法。但我无法弄清楚如何在该方法中检索新添加的联系人详细信息。请帮我一些指导和代码片段。感谢您的帮助。
答案 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
。如果不这样做,将导致重复(因为联系人将在下次同步时作为新联系人同步回服务器。)