7

ContentObserverfromサービスを登録しました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;
  }

}

編集:
もう1つの問題は、サービスを停止した後、連絡先を変更すると、onchange()関数も呼び出されることです。では、どうすればそれを停止したり、登録を解除したりできますかcontentobserver

4

2 に答える 2

0

ここで説明したように、 ContactsContract.Contacts.CONTENT_VCARD_URIを使用しました。

また、ここで説明したようなthreshold_timeを設定することもできます

そのもう少し効率的です。

于 2012-10-19T08:08:56.217 に答える
0

ContentObserver からの通知の受信を停止するには、登録を解除する必要があります。

後で登録/登録解除するために使用できる ContentObserver のインスタンスを作成します。

Contact_change changeObserver = new Contact_change();

オブザーバーを登録します。

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

オブザーバーの登録を解除します。

getContentResolver().unregisterContentObserver(changeObserver);
于 2014-02-25T13:23:10.093 に答える