我已经实现了一个同步适配器,可以将我的联系人与服务器同步,并返回在我的应用程序上注册的联系人更少。我将我的app-account添加到这些联系人并将其添加到我的电话簿联系人。 我实现了一个观察者类,观察我的电话簿 - 联系人(如添加,编辑或删除)是否有任何变化,如下所示
protected void onCreate(final Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mAccount = CreateSyncAccount(this);
ContentResolver.setSyncAutomatically(mAccount, AUTHORITY, true);
mResolver = getContentResolver();
mUri = new Uri.Builder()
.scheme(SCHEME)
.authority(AUTHORITY)
.path(TABLE_PATH)
.build();
TableObserver observer = new TableObserver();
mResolver.registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true, observer);
通过执行此操作,同步适配器进入无限循环并保持与服务器同步联系。
我猜可能是因为添加联系人而观察者在使用同步适配器添加联系人时反复启动同步适配器。
MyObserver Class的onChange方法如下:
@Override
public void onChange(boolean selfChange, Uri changeUri) {
mResolver.requestSync(mAccount, AUTHORITY, new Bundle());
}
请帮我解决一下,只有当用户手动修改电话簿的联系人时才能同步联系人,而不是在同步适配器添加联系人时。 感谢
答案 0 :(得分:1)
无需注册ContentObserver
即可自行触发同步。如果您的同步适配器配置正确,则无论何时创建,修改或删除联系人,Android都会自动触发同步。
只需确保您的同步适配器已在syncadapter xml文件中设置android:supportsUploading="true"
。