Использование RDATE и RRULE в Android с использованием CalendarContract API
Я пытаюсь добавить повторяющееся событие, используя CalendarContract API, чтобы я мог установить пользовательское напоминание, которое синхронизируется с Календарем Google. Однако, когда я использую свойство RRULE, я могу добавить повторяющееся событие для ежедневного, еженедельного или ежемесячного промежутка времени. Но я также хочу, чтобы это повторяющееся событие происходило и за один день.
ИСПОЛЬЗОВАНИЕ: пользователь устанавливает ежедневное напоминание, начиная с сегодняшнего дня и до даты X. Тем не менее, он также хочет получать напоминания об одной и той же задаче 3 раза в день на ежедневной основе до даты окончания.
В настоящее время я использую RRULE:
ContentResolver cr = mKaerReminderActivity.getContentResolver();
ContentValues contentValues = new ContentValues();
contentValues.put(Events.DTSTART, startTime);
contentValues.put(Events.DURATION, RFC2445_DURATION);
String rule = "FREQ=DAILY;UNTIL=20180525T000000Z";
contentValues.put(Events.RRULE, rule);
contentValues.put(Events.TITLE, REMINDER_PREFIX + title);
contentValues.put(Events.CALENDAR_ID, REMINDER_ID);
contentValues.put(Events.EVENT_TIMEZONE, CalendarContract.Calendars.CALENDAR_TIME_ZONE);
Uri uri = cr.insert(Events.CONTENT_URI, contentValues);
long eventID = Long.parseLong(uri.getLastPathSegment());
Это будет повторять событие ежедневно. Но если я хотел бы повторить событие несколько раз в определенный день, я не смог бы достичь. При дальнейшем анализе я обнаружил, что мы можем добавить исключение в RRULE, используя RDATE (повторяющийся набор правил для события определяется объединением RRULE и RRDATE). Но когда я попытался, используя RDATE, он не отражается в календаре, хотя событие создается.
String dateRule = "VALUE=DATE-TIME:20180515T200000Z,20180516T210000Z";
contentValues.put(Events.RDATE, dateRule);