在我的Android应用程序中,我有代码来编写,更新和删除日历中的事件。
现在我想从日历中获取一些事件,但我不知道事件ID。我想按标题,说明或任何其他值过滤事件。
我该怎么做?
我的代码:
public static void getEvents(Activity mContext) {
Uri.Builder builder = Uri.parse("content://com.android.calendar/instances/when").buildUpon();
long now = new Date().getTime();
ContentUris.appendId(builder, now - DateUtils.DAY_IN_MILLIS * 10000);
ContentUris.appendId(builder, now + DateUtils.DAY_IN_MILLIS * 10000);
String selection = "((calendar_id = ?) AND (description LIKE ?))";
String[] selectionArgs = new String[] {""+id, "'%abc%'"};
Cursor eventCursor = contentResolver.query(builder.build(),
new String[] { "title", "begin", "end", "allDay", "description"},
selection, selectionArgs,
"startDay ASC, startMinute ASC");
while (eventCursor.moveToNext()) {
String eventTitle = eventCursor.getString(0);
String description = eventCursor.getString(4);
}
}
当我按日历ID 进行过滤时,它可以正常运行,我会收到此日历中的所有活动。当我尝试添加“AND description =?”时 - 我得到0个事件,虽然我知道在描述中有字符串的事件。
答案 0 :(得分:0)
Calendar API有Freebusy query,您可以使用timeMin
和timeMax
在日期之间进行过滤。
请查看此SO thread以获取实际代码示例。
如果您想根据自己的偏好(标题等)进行查询,则必须自行制作自定义。您可以先尝试获取所有事件,然后对响应进行自定义查询。