7

我已经注册了一个来自服务的服务,并且当电话中有更新(例如呼叫或联系人更新)时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.

4

2 回答 2

0

In order to stop receiving notifications from ContentObserver, you must unregister it.

Create an instance of ContentObserver which you can use later to register/unregister.

Contact_change changeObserver = new Contact_change();

Register observer:

getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true,changeObserver);

Unregister observer:

getContentResolver().unregisterContentObserver(changeObserver);
于 2014-02-25T13:23:10.093 回答
0

我使用了此处提到的ContactsContract.Contacts.CONTENT_VCARD_URI

你也可以像这里提到的那样设置一个 threshold_time

它的效率更高一些。

于 2012-10-19T08:08:56.217 回答