【发布时间】:2012-08-27 23:18:42
【问题描述】:
我已经从服务中注册了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。
【问题讨论】:
-
我认为这是不可能的。最后一次通话的时间是联系人的一个字段,因此更改它正在更改联系人
-
是否有其他方法可以获取联系人更改通知?因为我想将联系人与我的应用程序同步。
-
如果您收到不需要的事件的额外通知,我认为这不是问题。
-
我有问题,因为即使联系人未更新但呼叫传入或传出并且调用 onchange() 然后我也认为联系人已更新,然后我会将所有联系人从电话写入数据库。所以值得案例。
-
但它不会对您的应用程序造成任何损害。