2012-05-03 12 views
9

Ich möchte eine Benachrichtigung auf meinem Telefon erhalten, wenn es eine Änderung in der Kontaktdatenbank gibt (hinzufügen, löschen) .Rechts jetzt benutze ich ContentObserver, um benachrichtigt zu werden.Folgende ist mein code.Problem ist, dass ich in der Lage bin nicht zu wissen, welcher Kontakt geändert wird. Kann jemand helfen ???Android benachrichtigen, wenn das Telefonbuch aktualisiert wird (Content Observer)

Vielen Dank im Voraus.

+2

Inhalt Beobachter man nicht sagen, welche geändert Sie durch Abfragen und Vergleichen mit alten Daten zu finden, haben aus – zapl

+1

Die Aussage ‚Super (null);‘ ist verdächtig. – Vincent

Antwort

6

Observer liefert nicht die Information, welcher Kontakt hinzugefügt/aktualisiert/gelöscht wurde. Um dies zu erfahren, speichern Sie die Kontakte in Ihrer eigenen DB-Tabelle und wenn Beobachter die Änderungsbenachrichtigung senden, überprüfen Sie sie mit den Kontakten des Systems.

+4

Wenn ich die '_id' des geänderten Kontakts kennen möchte, als wie kann ich es bekommen ???? – astuter

4

ich mich verändert habe einen Broadcast-Manager/Empfänger mit onChange Code dazu.

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

this helps ..

+0

Wie Sie wissen, dass der Wetterkontakt hinzugefügt oder gelöscht oder aktualisiert wurde – user3475052