Come la mia applicazione utilizza contenuti da android.provider.ContactsContract.Data
(API> 11) e ContactsContract.Contacts.CONTENT_URI
(API < 11) per popolare Contacts
.ContentObserver dovrebbe chiamare se e solo se ContactsContract.Contacts.CONTENT_URI cambia
Ho provato a registerContentObserver()
contro questi provider. Ma chiama il mio ContentObserver
anche se provo a chiamare una persona dal dispositivo non appena ho messo la chiamata. Attiva il mio ContentObserver
che non è utile per me in quanto non vi è alcuna modifica del contenuto in Contacts Provider
.
Root Cause:
Sembra LAST_TIME_CONTACTED
o qualcosa in ContactsContract.Contacts.CONTENT_URI
fare modifiche quando una chiamata è stata fatta dal dispositivo che wokes legittimi da ContentObserver
.
provato:
private class ContactsContentObserver extends ContentObserver {
public ContactsContentObserver() {
super(null);
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Zname.getPreferences().setRefreshContact(true);
}
}
Registrato ContentObserver
in OnCreate()
di Activity
ContactsContentObserver contactsContentObserver = new ContactsContentObserver();
getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, false, contactsContentObserver);
provato con notifyForDescendents
come false
su registerContentObserver
. Ancora si innesca fuori ContentObserver
Ques:
Come si può registrare ContentObserver
che innesca se e solo se le informazioni dei contatti è in fase di CRUD (Create, Update, Delete) ad eccezione Last_Time_Contacted
o dei suoi discendenti?