2012-09-03 10 views
7

サービスからContentObserverを登録しました。電話または連絡先の更新のような電話で更新がある場合、onchange()機能を取得します。しかし、私はonchange()関数を追加、更新、または削除が発生したときにのみ呼び出されるようにしたい。しかし、通話が着信または発信のときは嫌です。だから誰でも私にURIcontentObserverに登録できることを教えてもらえますか?私のコードはここに連絡先更新の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

私はこれが可能だとは思いません。最後の呼び出しの時間は連絡先のフィールドなので、変更すると連絡先が変更されます – njzk2

+0

連絡先の変更を通知する方法は他にもありますか?連絡先をアプリケーションと同期させたいからです。 – Nency

+0

あなたが必要としないイベントのための余分な通知を受け取ったら、本当に問題ではないと思います。 – njzk2

答えて

0

私はcontacts.contacts.CONTENT_VCARD_URIを上記のhereとして使用しました。

そしてまた、あなたは1のようなthreshold_timeがhere

そのもう少し効率的に言及設定することができます。

0

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

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

Contact_change changeObserver = new Contact_change(); 

登録オブザーバー:

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

登録解除オブザーバ:

getContentResolver().unregisterContentObserver(changeObserver); 
関連する問題