Add EXDATE to calendar recurrng event

385 Views Asked by At

I am using the following code to update my recurring event.

            ContentResolver cr = context.getContentResolver();
        ContentValues values = new ContentValues();
        TimeZone timeZone = TimeZone.getDefault();
        long startMillis = 0;
        long endMillis = 0;
        Calendar beginTime = Calendar.getInstance();
        beginTime.setTime(myEvent.START_DATE);
        startMillis = beginTime.getTimeInMillis();
        Calendar endTime = Calendar.getInstance();
        endTime.setTime(myEvent.END_DATE);
        endMillis = endTime.getTimeInMillis();
        values.put(CalendarContract.Events.DTSTART, startMillis);
        values.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID());
        values.put(CalendarContract.Events.TITLE,myEvent.TITLE);
        values.put(CalendarContract.Events.AVAILABILITY,myEvent.AVAILABILITY);
        values.put(CalendarContract.Events.ACCESS_LEVEL,myEvent.ACCESS_LEVEL);
        values.put(CalendarContract.Events.EVENT_LOCATION,myEvent.EVENT_LOCATION);          
        values.put(CalendarContract.Events.ALL_DAY,myEvent.ALL_DAY);
        values.put(CalendarContract.Events.GUESTS_CAN_INVITE_OTHERS,myEvent.GUESTS_CAN_INVITE_OTHERS);
        values.put(CalendarContract.Events.GUESTS_CAN_MODIFY,myEvent.GUESTS_CAN_MODIFY);
        values.put(CalendarContract.Events.GUESTS_CAN_SEE_GUESTS,myEvent.GUESTS_CAN_SEE_GUESTS);        
        values.put(CalendarContract.Events.DESCRIPTION, myEvent.Note);
        values.put(CalendarContract.Events.CALENDAR_ID, myEvent.ID);
        if(myEvent.RRULE != null && myEvent.RRULE.length()>0)
        {           
            values.put(CalendarContract.Events.RRULE,myEvent.RRULE);
            long duration = Math.max(0,endMillis- startMillis);
            if(duration > 0)
                values.put(CalendarContract.Events.DURATION, endMillis);
            if(myEvent.EXDATE != null && myEvent.EXDATE.length()>0)
            {           
                values.put(CalendarContract.Events.EXDATE,myEvent.EXDATE);
            }               
        }
        else
        {
            values.put(CalendarContract.Events.DTEND, endMillis);
        }
        Uri updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, myEvent.EVENT_ID);
        rowUpdated= cr.update(updateUri, values, null, null);

I added an exception date. After that, the event RRULE becomes null when I read in the event next time. All instances of the event is gone. it is very hard to program recurring events because there is not adequate documents to find info. Please help!

0

There are 0 best solutions below