Лучший способ синхронизации контактов

Я разрабатываю приложение для Android. В этом приложении мне нужно синхронизировать контакты с «Android-контактами».

Я прочитал некоторые сложные записи об этом предмете. Например;

http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-2/

Это хороший пример для контактов синхронизации, но я не думаю, что создаю для этого новую учетную запись. Поэтому решим синхронизировать контакты вручную и снова искать. Я нашел ContentObserver.

Как слушать изменения в базе данных контактов

Мой вопрос:

public class DenemeObserverActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.d("MyTag", "OnCreate---"); //this.getApplicationContext().getContentResolver().registerContentObserver (ContactsContract.Contacts.CONTENT_URI, true, contentObserver); Cursor cursor = managedQuery(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); cursor.setNotificationUri(this.getApplicationContext().getContentResolver(), ContactsContract.Contacts.CONTENT_URI); this.getApplicationContext().getContentResolver().notifyChange(ContactsContract.Contacts.CONTENT_URI, null); cursor.registerContentObserver(contentObserver); } private class MyContentObserver extends ContentObserver { public MyContentObserver() { super(null); } @Override public boolean deliverSelfNotifications() { Log.d("MyTag", "DeliverSelfNotifications---"); return true; } @Override public void onChange(boolean selfChange) { super.onChange(selfChange); Log.d("MyTag", "onChanges---"); } } MyContentObserver contentObserver = new MyContentObserver(); 

В этом коде, если я удалю эти строки;

 Cursor cursor = managedQuery(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); cursor.setNotificationUri(this.getApplicationContext().getContentResolver(), ContactsContract.Contacts.CONTENT_URI); this.getApplicationContext().getContentResolver().notifyChange(ContactsContract.Contacts.CONTENT_URI, null); cursor.registerContentObserver(contentObserver); 

И снять отметку;

 //this.getApplicationContext().getContentResolver().registerContentObserver (ContactsContract.Contacts.CONTENT_URI, true, contentObserver); 

Я могу изменять изменения контактов. Но Android просто вызывает метод onChange.

Если попытаться с этим кодом (с помощью курсора), когда контакты меняются, я не вижу никакого вызова для onChange ().

Как я могу обработать «Wich row was changed?».

ИЛИ

Могу ли я использовать AbstractThreadedSyncAdapter для синхронизации контактов без новой учетной записи, если да, то как?

Благодарю.