1
我正在使用本地日历。这里是我的代码来创建一个事件:实例表在更新ExDate列后不会重新生成android CalendarProvider
ContentValues values = new ContentValues();
values.put(CalendarContract.Events.DTSTART, 1457926200000L);
values.put(CalendarContract.Events.DURATION, "P3600S");
values.put(CalendarContract.Events.RRULE, "FREQ=DAILY;COUNT=2;WKST=SU");
values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
values.put(CalendarContract.Events.CALENDAR_ID, 34);
values.put(CalendarContract.Events.EXDATE, "20160314T033000Z");
values.put(CalendarContract.Events.TITLE, "R0");
Uri uri = getContentResolver().insert(CalendarContract.Events.CONTENT_URI, values);
事件已正确插入而COUNT
是2 RRULE
,我看是因为ExDate
只是一个事件。但如果我删除此行:
values.put(CalendarContract.Events.EXDATE, "20160314T033000Z");
而且更新插入事件:
ContentValues values = new ContentValues();
values.put(CalendarContract.Events.EXDATE, "20160314T033000Z");
int update = getContentResolver().update(ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, 3612), values, null, null);
事件更新成功(我怀疑该和ExDate正确更新)。但是我看到2个事件而不是一个,看起来ExDate
不起作用。
我知道有可能使用original_id
和original_instance_time
和CONTENT_EXCEPTION_URI
来插入异常。我想知道是否有其他方法可以做到这一点,而不是插入另一个事件?
感谢
你说得对。除了'DTSTART',我还必须包含其他相关值('RRULE'和'DURATION')。有了这4个值,结果就OK了。非常感谢你。 –