2010-11-26 4 views
4

Ich habe derzeit eine App geschrieben, die den Inhalt beobachtet: // SMS-URI für alle Änderungen an der Datenbank. Mein Beobachter wird erfolgreich ausgelöst, wenn einzelne Nachrichten hinzugefügt oder entfernt werden. Es wird jedoch keine Benachrichtigung ausgelöst, wenn ein gesamter Thread auf einmal gelöscht wird. Gibt es eine Möglichkeit, dieses Ereignis auszulösen? Oder vielleicht gibt es einen anderen Inhaltsanbieter, den ich beobachten sollte?Android: Beobachten SMS für gelöschte Threads

Uri URI = Uri.parse("content://sms"); 
String[] columns = {"_id", "date"}; 
Cursor c = getContentResolver().query(URI, columns, "type=?", new String[]{"1"}, "_id DESC"); 

Observer observer = new Observer(); 
c.registerContentObserver(observer); 

Und meine Beobachter Klasse:

private class Observer extends ContentObserver { 

    public Observer() { 
     super(null); 
    } 

    @Override 
    public void onChange(boolean selfChange) { 
     super.onChange(selfChange); 

     if (!selfChange) { 
      // do stuff 
      // never called when a thread is deleted 
     } 
    } 
} 
+0

Update: Ich habe versucht, Möglichkeiten zu finden, um dieses Problem zu umgehen, z. B. Neudefinitionen der IDs, die ich brauche, wenn neue Nachrichten eingehen, aber nichts hat sich als erfolgreich erwiesen. Mein Beobachter muss signalisiert werden, wenn ein Thread gelöscht wird. Weiß jemand, was das Problem ist? Oder gibt es eine andere Möglichkeit, auf gelöschte Threads zu hören? – mattprecious

+0

Kann meine Anwendung wissen, welche SMS gelöscht wird? Ich meine seinen Inhalt. Weil ich diese gelöschte Nachricht speichern muss? Danke .... –

+0

Nicht, dass ich weiß. Wenn Sie die Datenbank beobachten, werden Sie erst nach dem Löschen der Nachricht benachrichtigt, sodass Sie keine Informationen abrufen können. – mattprecious

Antwort

4

Ich schaltete den Inhalt zu beobachten: // mms-sms/Gespräche Content-Provider. Dieser Provider signalisiert meinem Beobachter richtig, wenn ein Thread gelöscht wird.