2010-12-13 8 views
0

J'ai cet observateur de contenu qui regarde sur le journal des appels:Déterminer le ContentObserver

public class monitorCallLog extends ContentObserver{ 
    private static final String TAG = "monitorCallLog"; 
    public monitorCallLog(Handler handler) { 
     super(handler); 
     // TODO Auto-generated constructor stub 
    } 
    @Override 
    public boolean deliverSelfNotifications() { 
     return false; 
    } 
    @Override 
    public void onChange(boolean selfChange){ 
     Log.v(TAG, "[onChange] *** ENTER ***"); 
     super.onChange(selfChange); 
     // Code goes in here to handle the job of tracking.... 
     Log.v(TAG, "[onChange] *** LEAVE ***"); 
    } 
} 

maintenant ... Comment puis-je déterminer la nature du changement sur cette URI content://call_log/calls?

Je veux vérifier si une suppression est survenue sur l'URI ... mais il n'y a aucune façon de le savoir ... cela semble s'appliquer à une requête/suppression/insertion/mise à jour sur l'URI qui déclenche la onChange méthode ....

des conseils/suggestions?

Répondre

0

Avez-vous essayé d'enregistrer un observateur pour chacun des appels Uris?

si vous avez 5 appels dans le journal des appels, enregistrez un observateur de contenu pour chaque appel Uri, en ayant peut-être initialisé l'observateur avec l'ID de l'appel observé.

Ainsi, lorsqu'un appel individuel est supprimé/mis à jour, la méthode de suppression du fournisseur de contenu enverra une notification correspondant à l'appel individuel, plutôt que tous les appels.

Je pense qu'il s'agit d'une approche non standard pour les listes provenant d'un curseur. Je crois que la plupart des utilisations de l'observation du contenu requery() le curseur.