android - android中的联系人同步适配器

标签 android sync android-syncadapter

我想在我的应用程序中使用同步适配器将 native 和第三方联系人(FB 除外)与服务器同步。 (只有客户端到服务器的一种同步方式)

这里我有两个疑惑——

1) 如果设备中有多个同步适配器并且脏位已经被另一个同步适配器清除,我的同步适配器是否能够立即检测到联系人更改/更新。

2)我用过

ContentResolver.setIsSyncable(account, ContactsContract.AUTHORITY, 1);
ContentResolver.setSyncAutomatically(account, ContactsContract.AUTHORITY, true);     

与服务器同步联系人。

它确实每 30 秒开始同步。

但我希望它在添加或删除或更新联系人时立即收到通知以启动 perfromSync 操作。

我也需要使用观察者吗?

最佳答案

为了查看联系人的更改,您必须向 ContentResolver 注册一个观察者。 sync API 并非旨在监视每一个变化,它旨在成为 Android 定期自动为您运行的后台 API,以便它可以批处理操作并更有效地使用网络,而不是在网络禁用时运行等。 ..

脏位是基于每个帐户使用的。通常,同步设计为每个联系人都有一个“拥有”帐户,而不是为将所有联系人从设备导出到特定服务而设计。有一个聚合过程可以处理将来自多个帐户的联系人加入到用户看到的一个“联系人”中。见:

http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.html

有关其工作原理的更多信息。

如果您打算将设备上的所有联系人导出到您的服务中,您将需要遍历联系人并为您的服务插入一个原始联系人。然后,您还需要与观察者一起观察 ContentResolver,以了解用户何时在某些服务上添加了新联系人,或者定期遍历表格以查找您尚未导出的联系人。

关于android - android中的联系人同步适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16183776/

相关文章:

android - 一般同步设置 "auto-sync"复选框以编程方式

java - Eclipse Paho Mqtt Client 是否保留所有已发布的消息,直到它们被代理在 QoS-2 下确认交付?

java - 无法解析导入javax.mail

包名重构后 Android Studio 构建失败

linux - Bash 脚本 : keep one line of local file in sync with remote file

video - 如何使用 ffmpeg 库同步音频和视频?

android - 在 Fragment 的 onCreate 中调用 Firebase 事件监听器

image - 如何在 plonesites 之间同步内容(图像和文件)

android - 如何在 Android 上编写 "sync now"操作?

android - Otto/EventBus 跨多个进程