2016-08-02 2 views
1

В моем приложении для Android у меня есть код для записи, обновления и удаления событий из/в календари.Получить и фильтровать события из Календаря Google

Теперь я хочу получить некоторые события из календаря, но я не знаю идентификаторов событий. Я хочу фильтровать события по названию, описанию или любому другому значению.

Как я могу это сделать?

Мой код:

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

} 

Когда фильтр календарным ид только - это работает, и я получаю все события в этом календаре. Когда я пытаюсь добавить «И описание =?» - я получаю 0 событий, хотя я знаю, что в их описании есть события со строкой.

ответ

0

Calendar API имеет Freebusy query, где вы проводите фильтр между датами, используя timeMin и timeMax. Проверьте этот код SO thread.

Если вы хотите сделать запрос на основе ваших предпочтений (заголовок и т. Д.), Вам придется создать свою собственную реализацию. Вы можете попробовать сначала получить все события, а затем создать свой собственный запрос в ответ.