同步联系人的最佳方式

时间:2012-05-10 06:57:28

标签: android synchronization contacts

我正在开发一款Android应用。在这个应用程序中,我必须将联系人与“Android联系人”同步。

我读了一些关于这个主题的复杂文章。例如;

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

这是同步联系人的好例子,但我不认为为此创建一个新帐户。因此,手动决定同步联系人并再次搜索。我找到了ContentObserver。

how to listen for changes in Contact Database

我的问题是;

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);

和unmark;

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

我可以处理更改联系人更改。但Android只是调用onChange方法。

如果在联系人更改时尝试使用此代码(带光标),我无法看到对onChange()的任何调用。

我如何处理“Wich row被改变了?”。

OR

我是否可以在没有新帐户的情况下使用AbstractThreadedSyncAdapter进行同步联系,如果是这样的话?

感谢。

0 个答案:

没有答案