我已在服务中注册了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
。
答案 0 :(得分:0)
答案 1 :(得分:0)
要停止接收来自ContentObserver的通知,您必须取消注册。
创建一个ContentObserver实例,稍后可以使用它来注册/取消注册。
Contact_change changeObserver = new Contact_change();
注册观察员:
getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true,changeObserver);
取消注册观察员:
getContentResolver().unregisterContentObserver(changeObserver);