2012-05-03 3 views
9

연락처 데이터베이스에 변경 사항이 있으면 (추가, 삭제) 휴대 전화에서 알림을 받고 싶습니다. 지금은 알림을 받기 위해 ContentObserver를 사용하고 있습니다. 다음과 같습니다. 내 코드. 문제는 내가 어떤 연락처가 변경되었는지 알 수 없다는 것입니다. 아무도 도와 줄 수 있습니까 ???전화 번호부 업데이트시 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

설명과 비교하여 알아 내야 변경하는 일을 말하지 마 '슈퍼 (널);' 의심 스럽네. – Vincent

답변

6

옵서버는 어떤 연락처가 추가/업데이트/삭제되었는지에 대한 정보를 제공하지 않습니다. 이 사실을 알기 위해서는 자신의 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