我已经从服务中注册了一个ContentObserver,当电话有更新时,我会得到onchange()函数,如电话或联系人更新.但我希望只在发生添加,更新或删除时调用onchange()函数.但我不希望呼叫是传入还是传出.那么有人能告诉我哪些URI可以在contentObserver中注册?我的代码在这里
getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI,true,new Contact_change());
和Contact_change.java类一样
public class Contact_change extends ContentObserver{
public Contact_service() {
super(null);
}
@Override
public void onChange(boolean selfChange){
Log.i("contact_service","onchange");
Super.onChange(selfChange);
}
@Override
public boolean deliverSelfNotifications() {
return true;
}
}
编辑:
我还有一个问题是,如果我在联系中进行更改后停止服务,那么也会调用onchange()函数.那么我怎么能停止它或取消注册contentobserver.
解决方法
我使用了如
here所述的ContactsContract.Contacts.CONTENT_VCARD_URI.
你也可以设置一个像here那样的threshold_time
它的效率更高一点.