android - 如何在Sync Adapter onPerformSync 方法中访问新添加的联系人?

标签 android android-syncadapter

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

最佳答案

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

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

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

String that uniquely identifies this row to its source account. Typically it is set at the time the raw contact is inserted and never changed afterwards. The one notable exception is a new raw contact: it will have an account name and type (and possibly a data set), but no source id. This indicates to the sync adapter that a new contact needs to be created server-side and its ID stored in the corresponding SOURCE_ID field on the phone.

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

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

关于android - 如何在Sync Adapter onPerformSync 方法中访问新添加的联系人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36518226/

相关文章:

java - 类(class)倒数计时器不会重置

java - GreenDAO 3.1.1 注释处理在 "[Type] cannot be resolved to a variable"处失败

android - 当应用程序在 Play 商店发布时,Google LeaderBoard 不工作

android - 数据和同步 - 手动同步邮件。日历和联系人

android - 使用 addPeriodicSync 时停止同步适配器进行初始同步

android - 如何处理来自 ContentResolver.applyBatch 的 "SQLiteException: null"?

android - Phonegap Android 互联网无法正常工作

java - 安卓|运行时获取 OkHTTP 库版本

java - Android-SyncAdapter回调

android - 在 Android App 和网络服务器之间同步数据