Android:如何通过编程将重复事件更改为一次性事件

Android:如何通过编程将重复事件更改为一次性事件,android,android-calendar,Android,Android Calendar,您好,我使用的是日历合约API,只支持API级别14及以上,所以我不关心旧版本的支持 我在将重复事件更新为单次事件时遇到问题。 我无法在更新事件时给出事件。DTEND值,错误显示为事件。持续时间和事件。DTEND不能同时出现 我没有传递Events.DURATION但Android不允许更新事件,但是如果我像deviceCalendarValues.put(Events.DURATION,”)一样传递Events.DURATION为空以及事件的正确值。DTEND。这将导致更复杂的情况,例如将添加

您好,我使用的是日历合约API,只支持API级别14及以上,所以我不关心旧版本的支持

我在将重复事件更新为单次事件时遇到问题。 我无法在更新事件时给出
事件。DTEND
值,错误显示为
事件。持续时间
事件。DTEND
不能同时出现

我没有传递
Events.DURATION
但Android不允许更新事件,但是如果我像
deviceCalendarValues.put(Events.DURATION,”)一样传递
Events.DURATION
为空
以及
事件的正确值。DTEND
。这将导致更复杂的情况,例如将添加两个事件一个将持续时间设为零,并使开始和结束时间相同。其他事件将与日历同步后(我将事件添加到google日历中,它与其他可用日历一起列出)的给定数据一起出现。数据正确的事件将被删除,错误的事件将存在

还有一件事我正在更新
Events.CONTENT\u URI
like

updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, event_dao.getI_EventID());

updatedRowCount = activity.getContentResolver().update(updateUri,
            deviceCalendarValues, null, null);
这里出了什么问题?将重复事件更改为单一事件的正确方法是什么

    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传递