Android 如何知道联系人/电话簿列表或数据库是否已更新?

Android 如何知道联系人/电话簿列表或数据库是否已更新?,android,contacts,android-contacts,contentobserver,Android,Contacts,Android Contacts,Contentobserver,我已经实现了一个同步适配器,它通过服务器发送我的所有联系人。 但现在我面临的问题是,如果联系人列表已经更新,系统将如何响应 我使用内容观察者来发现,但它似乎仅限于活动生命周期 这是我的代码: class MyObserver extends ContentObserver { public MyObserver(Handler handler) { super(handler); } @Override public void onChange(

我已经实现了一个同步适配器,它通过服务器发送我的所有联系人。 但现在我面临的问题是,如果联系人列表已经更新,系统将如何响应

我使用内容观察者来发现,但它似乎仅限于活动生命周期

这是我的代码:

class MyObserver extends ContentObserver {
    public MyObserver(Handler handler) {
        super(handler);
    }

    @Override
    public void onChange(boolean selfChange) {
        this.onChange(selfChange, null);
    }

    @Override
    public void onChange(boolean selfChange, Uri uri) {

        Log.e("change   ", "contact");

    }
}
要注册它:

context.getContentResolver().registerContentObserver(
            Contacts.CONTENT_URI, false, new MyObserver(new Handler()));
没有广播要通知它吗


或者我必须为它提供服务。

为此,您必须按如下方式运行服务

public class ContactService extends Service {

MyObserver observer;
@Override
public void onDestroy() {
    // TODO Auto-generated method stub
    getContentResolver().unregisterContentObserver(observer);
    super.onDestroy();
}

@Override
public void onCreate() {
    System.out.println("service created");
    observer=new MyObserver(new Handler());
    // TODO Auto-generated method stub
    getContentResolver().registerContentObserver(Contacts.CONTENT_URI, false, observer);
    super.onCreate();
}

@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}
}

然后,当联系人数据发生更改时,您将通知。

可能的副本您是否理解我的要求??你理解这个问题了吗?我理解的是你有一些数据,你希望在数据更改时得到通知。您为此使用了ContentObserver,但您想知道如何通知此ContentObserver。如果这不是你的意思,我很抱歉,如果你重新措辞这个问题会有所帮助。广播通知什么?你的意思是什么?如何知道在android电话簿中是否添加或删除了联系人,而不考虑应用程序?