Home » Android » android – ContentObserver for listening contact changes

android – ContentObserver for listening contact changes

Posted by: admin June 15, 2020 Leave a comment


I really don’t understand why content observer listens the changes which is not related with the contact info.

I simply registered to the URI which I wanna listen the changes:

getContentResolver().registerContentObserver(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, true, contactsObserver);

But after calling someone or texting to someone, it triggers and calls onChange method in ContentObserver. So I need to re-sync all the contact list with my application although I don’t need to do.

Only field I am interested in:

  • ContactsContract.CommonDataKinds.Phone.CONTACT_ID
  • ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
  • ContactsContract.CommonDataKinds.Phone.NUMBER

What kind of changes should I implement to listen the changes for this DB items?

How to&Answers:

The Contacts database has a field ContactsContract.Contacts.TIMES_CONTACTED
This field is updated every time you contact someone in your contact list.

It is even possible to update this field using your own app, which means, if you contact any contact using an app that updates this field, your onChange() method will be called.