从Google日历获取并过滤活动

时间:2016-08-02 07:18:14

标签: android google-calendar-api

在我的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个事件,虽然我知道在描述中有字符串的事件。

1 个答案:

答案 0 :(得分:0)

Calendar API有Freebusy query,您可以使用timeMintimeMax在日期之间进行过滤。 请查看此SO thread以获取实际代码示例。

如果您想根据自己的偏好(标题等)进行查询,则必须自行制作自定义。您可以先尝试获取所有事件,然后对响应进行自定义查询。