2

以下のコードを使用して、Android のネイティブ カレンダー アプリケーションに保存されているすべてのカレンダーからすべてのイベントを取得しています。ネイティブ カレンダーから特定のイベントを削除しても、コードはそのイベントを取得して表示します。これはどのように可能でしょうか。イベントを実際に削除するのではなく、削除フラグを設定しますか。

Cursor cursor = cr.query(Uri.parse("content://com.android.calendar/events"),
                    projection, selection, selectionArgs, null);
4

1 に答える 1

7

「DELETED」フラグが設定されているかどうかを確認してください。

または、SELECTION に以下を含めることもできます

AND (deleted != 1)

したがって、選択文字列は次のようになります。

String selection = "( ("+ "title" + " LIKE '"+name+"') AND ( deleted != 1 ) )";

場合によっては、CalendarDB がイベントを削除するのに時間がかかることがあります。ただし、「削除された」列は「1」としてマークされ、すぐに削除されることを示します。遅延の理由は、カレンダーが同期されるのを待っている可能性があります

ps: このツール -- http://www.cellobject.net/Tools/CellObjectSQLiteXMLBrowser.aspxを使用して、Calendar DB を視覚化してみてください。データベースの「削除済み」列と「ダーティ」列を確認してください

于 2013-04-03T09:52:34.077 に答える