I am trying to listen for any change in the contact database.
So I create my contentObserver which is a child class of ContentObserver
:
private class MyContentObserver extends ContentObserver {
public MyContentObserver() {
super(null);
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
System.out.println (" Calling onChange" );
}
}
MyContentObserver contentObserver = new MyContentObserver();
context.getContentResolver().registerContentObserver (People.CONTENT_URI, true, contentObserver);
But When I use 'EditContactActivity
' to change the contact database, My onChange()
does not get called.
I have deployed your example as it is and it works fine.
package com.test.contentobserver;
import android.app.Activity;
import android.database.ContentObserver;
import android.os.Bundle;
import android.provider.Contacts.People;
public class TestContentObserver extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MyContentObserver contentObserver = new MyContentObserver();
getApplicationContext().getContentResolver().registerContentObserver(
ContactsContract.Contacts.CONTENT_URI,
true,
contentObserver);
}
private class MyContentObserver extends ContentObserver {
public MyContentObserver() {
super(null);
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Log.d(this.class.getSimpleName(), "A change has happened");
}
}
}
Something else must be wrong...
Are you making the changes through the cursor the observer is registered with?
Check that with the Observer function deliverSelfNotifications(). (it returns false by default)
You may want to override that observer function with something like:
@Override
public boolean deliverSelfNotifications() {
return true;
}
EDIT: MannyNS's answer has now been updated with the new URI (ContactsContract.Contacts.CONTENT_URI
)
A simple TIP about MannyNS 's answer.
Here, People.CONTENT_URI
is deprecated.
Code as follows instead.-->ContactsContract.Contacts.CONTENT_URI
getApplicationContext().getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true, contentobserver);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With