您好我正在使用日历合同API,并且仅支持API级别14及更高级别,因此我不关心旧版本支持。
将重复事件更新为单次发生事件时,我遇到了问题。
我不能'在更新事件时提供Events.DTEND
值,因为错误显示为Events.DURATION
且Events.DTEND
无法同时出现。
我没有通过Events.DURATION
,但Android不允许更新活动,但是如果我将Events.DURATION
作为空deviceCalendarValues.put(Events.DURATION, "");
传递给Events.DTEND
的正确值Events.CONTENT_URI
1}}。这导致更复杂的情况,例如将添加两个事件,其将持续时间为零并且使开始和结束时间相同。其他事件将与时间和时间以及日历同步后的给定数据一起出现(我将事件添加到谷歌日历中与其他可用日历一起列出)具有正确数据的事件将被删除并且错误的事件将被删除在那里存在。
我在updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, event_dao.getI_EventID());
updatedRowCount = activity.getContentResolver().update(updateUri,
deviceCalendarValues, null, null);
上更新的内容还有
{{1}}
这里出了什么问题?将重复事件更改为单个事件事件的正确方法是什么?
答案 0 :(得分:0)
ContentValues values = new ContentValues();
if(this.id>0)
values.put(Events._ID, this.id);
values.put(Events.DTSTART, this.startMillis);
if(title!=null)
values.put(Events.TITLE, title.toString());
if(description!=null)
values.put(Events.DESCRIPTION, description.toString());
values.put(Events.CALENDAR_ID, SharedPreferenceManager.getSharedInstance().getCalendarId());
values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
if(location!=null)
values.put(Events.EVENT_LOCATION, location.toString());
values.put(Events.ALL_DAY, allDay ? 1 : 0);
if(!TextUtils.isEmpty(rule)) {
values.put(Events.RRULE, rule);
values.put(Events.DURATION, getDuration());
values.put(Events.DTEND, (Long) null);
}else {
values.put(Events.DTEND, endMillis);
}
values.put(Events.ACCESS_LEVEL, 0);// Default (0), Private (2), Public (3)
values.put(Events.EVENT_COLOR_KEY, AppUtility.getColorKeyFromColorCode(color));
如果是重复发生的事件,则应将TEND传递为null