0

通話ログを監視している次のコンテンツ オブザーバーがあります。

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 ***");
    }
}

さて...どうすればこのURIの変更の性質を判断できますcontent://call_log/callsか?

上記のURIで削除が発生したかどうかを確認したい...しかし、知る方法はありません...これは、onChangeメソッドをトリガーする上記のURIのクエリ/削除/挿入/更新に適用されるようです.. ..

ヒント/提案はありますか?

4

1 に答える 1

0

呼び出し Uris ごとにオブザーバーを登録しようとしましたか?

つまり、通話ログに 5 つの通話がある場合は、各通話 Uri に対してコンテンツ オブザーバーを登録します。おそらく、オブザーバーは監視対象の通話の ID で初期化されます。

これにより、個々の呼び出しが削除/更新されると、コンテンツ プロバイダーの delete メソッドは、すべての呼び出しではなく、個々の呼び出しに一致する通知を送信します。

これは、カーソルからのリストに対する非標準的なアプローチだと思います。コンテンツ観察のほとんどの用途はrequery()カーソルになると思います。

于 2010-12-28T02:01:31.533 に答える