2012-05-03 14 views
9

連絡先データベースに変更(追加、削除)がある場合は、私の携帯電話で通知を受け取りたい。現在、通知を受けるためにContentObserverを使用している。私のcode.Problemは私はどの連絡先が変更されているか知ることができないことです。電話帳が更新されたときにAndroidが通知する(コンテンツオブザーバー)

public class ContentObserverActivity extends Activity { 
    Button registerbutton; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     registerbutton=(Button)findViewById(R.id.button1); 
     registerbutton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
      getContentResolver() 
       .registerContentObserver(
         ContactsContract.Contacts.CONTENT_URI, true, 
         new MyCOntentObserver()); 
      } 
     }); 
    } 


    public class MyCOntentObserver extends ContentObserver{ 
     public MyCOntentObserver() { 
      super(null); 
     } 
     @Override 
     public void onChange(boolean selfChange) { 
     super.onChange(selfChange); 
      Log.e("","~~~~~~"+selfChange); 
     } 

     @Override 
     public boolean deliverSelfNotifications() { 
      return true; 
     } 
    } 
} 

ありがとうございます。

+2

コンテンツオブザーバーは、あなたが問い合わせると、古いデータ – zapl

+1

文で比較することによって見つける必要が変更された1あなたを教えていない「スーパー(NULL);」疑わしいです。 – Vincent

答えて

6

Observerは、どの連絡先が追加/更新/削除されたかに関する情報を提供しません。これを知るには、自分のDBテーブルに連絡先を保存し、オブザーバーが変更通知を送信すると、システムの連絡先でチェックします。

+4

変更された連絡先の '_id'を知りたければ、どうすればいいのですか? – astuter

4

を使用して可能かもしれないと思います。このことができます

@Override 
public void onChange (boolean selfChange) 
{ 
    this.onChange(selfChange, null); 
} 

@Override 
public void onChange (boolean selfChange,Uri uri) 
{ 
    Cursor cursor = mCntxt.getContentResolver().query(
      ContactsContract.Contacts.CONTENT_URI, null, null, null,ContactsContract.Contacts.CONTACT_LAST_UPDATED_TIMESTAMP + " Desc"); 
    if (cursor.moveToNext()) { 
     String id = cursor.getString(
       cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
     String name = cursor.getString(
       cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
     Log.w("Contact ID", id); 
     Log.w("Person Name",name); 
     } 
} 

・ホープ..

+0

wheather連絡先が追加または削除されたか、更新されたかを知る方法 – user3475052

関連する問題