定期的なイベントに例外日を挿入する方法が見つかりません。
環境
私は成功したイベントで.ics ファイル (ical 形式) を解析しています。ここに.icsがあります
BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:TESTING
X-WR-TIMEZONE:Europe/Amsterdam
X-WR-CALDESC:
BEGIN:VTIMEZONE
TZID:Europe/Amsterdam
X-LIC-LOCATION:Europe/Amsterdam
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTART;TZID=Europe/Amsterdam:20140425T103000
DTEND;TZID=Europe/Amsterdam:20140425T113000
RRULE:FREQ=WEEKLY;BYDAY=FR
EXDATE;TZID=Europe/Amsterdam:20140516T103000
EXDATE;TZID=Europe/Amsterdam:20140502T103000
DTSTAMP:20140425T090449Z
UID:3bb37doi3qcuaih3t03ns0q9jo@google.com
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;CN=TESTIN
G;X-NUM-GUESTS=0:mailto:domain.com_o300s@group.calendar.google.com
CREATED:20140425T090310Z
DESCRIPTION:
LAST-MODIFIED:20140425T090427Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:my-recurring-event-with-ex
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR
イベントは、CalendarContract API を介して Android カレンダーに挿入されます。
dtstart: 20140425T103000 dtend: 20140425T113000 rrule: FREQ=WEEKLY;BYDAY=FR
問題: 除外日
カレンダーを照会すると、2014 年 4 月 25 日から毎週金曜日にイベントが表示されます。
問題は、いくつかの日付も除外する必要があることです (ical: 2014 年 5 月 2 日と 2014 年 5 月 16 日を参照)
試行 1
次のような EXDATE フィールドのみを使用して 16 の exdate を挿入しようとしまし た:
試行 2
CONTENT_EXCEPTION_URI を使用して例外を挿入しようとしましたが、この投稿を介して:元の定期的なイベントから例外イベントを作成しますか? Google カレンダー コード: https://github.com/android/platform_packages_apps_calendar/blob/master/src/com/android/calendar/EventInfoFragment.java#L1401
ContentValues values2 = new ContentValues();
values2.put(CalendarContract.Events.ORIGINAL_INSTANCE_TIME, event.getAsString(CalendarContract.Events.DTSTART));
values2.put(CalendarContract.Events.STATUS, CalendarContract.Events.STATUS_CANCELED);
Uri.Builder eventUriBuilder = CalendarContract.Events.CONTENT_EXCEPTION_URI.buildUpon();
eventUriBuilder.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true");
eventUriBuilder.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, accountName);
eventUriBuilder.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, accountType);
ContentUris.appendId(eventUriBuilder, dbId);
Uri uriex = cr.insert(eventUriBuilder.build(), values2);
uriex は常にヌルです。
試行 3
定期的なイベントの単一のエントリを削除するためのGoogleカレンダーコードのように、元のイベントへのリンクを含む新しいイベントを挿入しようとしました https://github.com/android/platform_packages_apps_calendar/blob/master/src/com/android/ calendar/DeleteEventHelper.java#L361
Q
定期的なイベントの例外に対して CalendarContract API を処理する方法を知っている人はいますか?