Ricardo Ribas
Ricardo Ribas

Reputation: 407

Can't insert multiple events in Google Calendar

In my application i'm using the CalendarContract API to manage calendars and events on the Google Calendar. I'm having some problems when adding multiple events to a single calendar. In general, the problem of this method is that whenever i add a new event to the google calendar, the old event is replaced by the 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 for solving this kind of problem? Kind regards.

Upvotes: 4

Views: 665

Answers (1)

Jordi Castilla
Jordi Castilla

Reputation: 26961

According the API i guess you're missing .execute()

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

Also check this question

Upvotes: 1

Related Questions