我以前使用ContentObserver来获取有关设备联系人列表更改的通知。 问题是我需要在后台工作(当应用程序关闭时),所以我使用了一个服务,但它仍然无法工作(除非我声明服务在前台工作 - 我们不希望这发生。)
所以我看到了另一种使用SyncAdapter的解决方案。 我有自己的存储解决方案,我没有在我的应用程序中使用ContentProvider。 我也有自己的实现来检测添加/删除/更改了哪个联系人。
我唯一需要的是检测发生的时间并获得相关通知。
我是否需要存根内容提供商才能实现这一目标? 是否足以将com.android.contacts声明为同步适配器的权限?
我需要一些帮助来配置那些......
提前致谢! ROTEM。
答案 0 :(得分:0)
O.k。所以我终于搞清楚了。
要实现这一点,(仅获得有关设备联系人更改的通知),您不需要存根内容提供程序。 只需使用同步适配器服务声明同步适配器。 在syncadapter的xml声明中,使用ContactsContract.AUTHORITY 这意味着:android:contentAuthority =“com.android.contacts”
并设置自动同步: ContentResolver.setSyncAutomatically(account,ContactsContract.AUTHORITY,true);
请记住,您的SyncAdapter实现中的onPerformSync方法不会立即被调用,系统会“等待”最佳时间来进行这些同步,从我的体验开始花费约40秒。