Unable to insert multiple events into Google Calendar.

In my application, I use the CalendarContract API to manage the calendar and events in Google Calendar. I'm having trouble adding multiple events to the same calendar. In general, the problem with this method is that whenever I add a new event to the Google calendar, the old event is replaced with a new one. Here is the code of my method:

    public int addEvent(Context context, String color, int calendarId, String name, String location, String description, Date dateBegin, Date dateEnd) {
            long startMillisEpoch;
            long endMillisEpoch;

            Calendar beginTime = Calendar.getInstance();
            beginTime.setTime(dateBegin);
            startMillisEpoch = beginTime.getTimeInMillis();

            Calendar endTime = Calendar.getInstance();
            endTime.setTime(dateEnd);
            endMillisEpoch = endTime.getTimeInMillis();

            int eventColor;
            try {
                eventColor = Color.parseColor(color);
            } catch (Exception e) {
                // Get a random color
                Random random = new Random();
                eventColor = MyApp.RANDOM_COLORS[random.nextInt(MyApp.RANDOM_COLORS.length)];
            }
            ContentValues values = new ContentValues();
            values.put(CalendarContract.Events.CALENDAR_ID, calendarId);
            values.put(CalendarContract.Events.DTSTART, startMillisEpoch);
            values.put(CalendarContract.Events.DTEND, endMillisEpoch);
            values.put(CalendarContract.Events.TITLE, name);
            values.put(CalendarContract.Events.EVENT_LOCATION, location);
            values.put(CalendarContract.Events.DESCRIPTION, description);
            values.put(CalendarContract.Events.EVENT_COLOR, eventColor);
            // NOTE: Every event MUST have a timezone. Otherwise,
            // the application will throw an IllegalArgumentException
            values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getDisplayName());
            // Put default values
            values.put(CalendarContract.Events.ALL_DAY, NON_ALL_DAY);
            values.put(CalendarContract.Events.GUESTS_CAN_INVITE_OTHERS, 1);
            Uri calUri = context.getContentResolver().insert(CalendarContract.Events.CONTENT_URI, values);
            if (calUri != null) {
                try {
                    return Integer.parseInt(calUri.getLastPathSegment());
                } catch (Exception e) {
                    return -1;
                }
            }
            return -1;
        }

Any ideas to solve this problem? Regards.

+4
source share
1 answer

According to the API , I think you are missing.execute()

Uri calUri = context.getContentResolver()
                    .insert(CalendarContract.Events.CONTENT_URI, values)
                    .execute();

Also check this question

+1
source

All Articles