ContentObserver的联系人更新手动
问题描述:
我已经注册的服务ContentObserver
,我也得到了onchange()
功能,当有更新的手机,如呼叫或联系人更新。但我希望onchange()
函数只有在添加,更新或删除时才会被调用。但我不希望呼叫是传入或传出。那么谁能告诉我哪个URI
我可以在contentObserver
注册?我的代码是在这里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
。
答
为了阻止ContentObserver收到通知,必须取消它。
创建ContentObserver的一个实例,您可以使用以后注册/注销。
Contact_change changeObserver = new Contact_change();
注册观察员:
getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true,changeObserver);
注销观察员:
getContentResolver().unregisterContentObserver(changeObserver);
我不认为这是可能的。上次呼叫的时间是联系人的一个字段,因此更改它将更改联系人 – njzk2
是否通过其他方式获取联系人更改通知?因为我想将联系人与我的应用程序同步。 – Nency
如果您收到不需要的活动的额外通知,我不认为这是真正的问题。 – njzk2