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 需要一些时间才能删除事件。但是“已删除”的 COLUMN 将被标记为“1”,表示它们将很快被删除。延迟的原因可能是日历正在等待同步

ps:尝试使用这个工具——http: //www.cellobject.net/Tools/CellObjectSQLiteXMLBrowser.aspx来可视化日历数据库。请检查数据库中的“已删除”和“脏”列

于 2013-04-03T09:52:34.077 回答