Как получить все события двух календарей в Android
В моем приложении я использую два календаря, скажем, календарь "бизнес" с CalendarContract.Events.CALENDAR_ID = 1
и календарь "приват" с CalendarContract.Events.CALENDAR_ID = 2
,
Если пользователь выбирает для просмотра события обоих календарей в моем приложении, мне нужно каким-то образом поместить события обоих календарей в курсор.
Я попробовал это, как в следующем коде, где я поместил в свой выбор оба CalendarIds с OR
, но это показывает мне невероятное количество событий.
Итак, мой вопрос, как получить курсор с событиями двух календарей?
String[] projection = { CalendarContract.Events._ID,
CalendarContract.Events.CALENDAR_ID,
CalendarContract.Events.TITLE,
CalendarContract.Events.DESCRIPTION,
CalendarContract.Events.DTSTART, CalendarContract.Events.DTEND,
CalendarContract.Events.DURATION,
CalendarContract.Events.DELETED };
SelectionArgs = new String[] { strCalendarStart,
strCalendarStop, "0",
intPrivateCalendarId.toString(),
intBeruflicheCalendarId.toString() };
selection = "((" + CalendarContract.Events.DTSTART + " >= ?) AND ("
+ CalendarContract.Events.DTEND + " <= ?)AND " + "("
+ CalendarContract.Events.DELETED + " = ?) AND"
+ "(" + CalendarContract.Events.CALENDAR_ID
+ " = ?) OR" + "("
+ CalendarContract.Events.CALENDAR_ID + " = ?))";
Cursor curCalendar = cr.query( CalendarContract.Events.CONTENT_URI,
projection, selection, SelectionArgs,
CalendarContract.Events.DTSTART + " ASC" );
1 ответ
Вы пытались добавить скобки вокруг OR
как это?
selection = "((" + CalendarContract.Events.DTSTART + " >= ?) AND ("
+ CalendarContract.Events.DTEND + " <= ?)AND " + "("
+ CalendarContract.Events.DELETED + " = ?) AND"
+ "((" + CalendarContract.Events.CALENDAR_ID
+ " = ?) OR" + "("
+ CalendarContract.Events.CALENDAR_ID + " = ?)))";
Так как я думаю OR
имеет более низкий приоритет, ваш код будет возвращать события, не удаленные и т. д. из календаря 1, и все события из календаря 2.
Я не совсем уверен, но, возможно, стоит попробовать. Я надеюсь, что этот ответ может помочь. Хорошего дня.