Android notifica cuando se actualiza la guía telefónica (Observador de contenido)

Quiero conseguir una notificación en mi teléfono si hay cualquier cambio en la base de datos del contacto (agregue, suprima). Ahora estoy utilizando ContentObserver para conseguir notify.Following es mi code.Problem es que no puedo capaz de saber qué contacto ¿Puede alguien ayudar ???

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; } } } 

Gracias por adelantado.

Observer no proporciona la información de qué contacto se agrega / actualiza / elimina. Para conocer esto, guarde los contactos en su propia tabla de DB y cuando el observador envíe la notificación de cambio, compruébelo con los contactos del sistema.

He cambiado el código de cambio a esto.

 @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); } } 

Espero que esto ayude..

Creo que es posible usar un administrador / receptor de Broadcast http://www.intertech.com/Blog/using-localbroadcastmanager-in-service-to-activity-communications/

  • ContentObserver debe llamar si y sólo si ContactsContract.Contacts.CONTENT_URI cambia
  • Android - Observer DB cambia con GreenDao ORM
  • ¿Cómo utilizar ContentObserver con RecyclerView?
  • Aplicación de copia de seguridad y sincronización de contactos
  • Cómo detectar nuevas aplicaciones en un dispositivo Android
  • ContentObserver se llama incluso cuando no hay cambios en el cursor
  • El observador SMS enviado se ejecuta 3 veces
  • El método ContentObserver onChange () se llama muchas veces
  • Cómo manejar llamadas REST, persistencia de datos, sincronización y observación de ContentProvider
  • ¿Por qué el ContentObserver se llama varias veces?
  • Por qué y cuándo anular el registro de observadores de contenido en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.