user9658451
user9658451

Reputation:

How Do I Programmatically Add Reminders To A Calendar Event Using Events URI?

I'm trying to figure out how to add reminders to a Calendar Event in my android app. The image below circled in red is what I want to programmatically add to my code below the image. That's what I'm having a hard time with. I'll appreciate the help!

enter image description here

This is what I have so far... Everything works fine except for what I need help with.

 public void addEventToCalendar(String EventTitle, String EventDescription, String EventLocation, int EventStartDateYear, int EventStartDateMonth, int EventStartDateDay, int EventEndDateYear, int EventEndDateMonth, int EventEndDateDay, int BeginHour, int BeginMin, int EndHour, int EndMin, Boolean AllDay, String EventFrequency) {
        Toast.makeText(this, "Adding Event To Your Calendar...", Toast.LENGTH_SHORT).show();
        ContentValues event = new ContentValues();
        Calendar startcalendar = Calendar.getInstance();
        Calendar endcalendar = Calendar.getInstance();
        startcalendar.set(EventStartDateYear, EventStartDateMonth, EventStartDateDay, BeginHour, BeginMin);
        endcalendar.set(EventStartDateYear, EventEndDateMonth, EventEndDateDay, EndHour, EndMin);
        event.put(CalendarContract.Events.CALENDAR_ID, 1);
        event.put(CalendarContract.Events.TITLE, EventTitle);
        event.put(CalendarContract.Events.DESCRIPTION, EventDescription);
        event.put(CalendarContract.Events.EVENT_LOCATION, EventLocation);
        event.put(CalendarContract.Events.DTSTART, startcalendar.getTimeInMillis());
        event.put(CalendarContract.Events.DTEND, endcalendar.getTimeInMillis());
        event.put(CalendarContract.Events.ALL_DAY, AllDay);
        event.put(CalendarContract.Reminders.MINUTES, 5); //this here is what I am trying to figure out... 5 minutes before event or 5 hours before event, or 5 days before event, etc.
        event.put(CalendarContract.Events.HAS_ALARM, true);
        event.put(CalendarContract.Events.RRULE, EventFrequency);
        event.put(CalendarContract.Events.EVENT_TIMEZONE, "GMT-05:00");
        if (android.os.Build.VERSION.SDK_INT <= 7) {
        eventsUri = Uri.parse("content://calendar/events");
    } else {
        eventsUri = Uri.parse("content://com.android.calendar/events");
    }
    Uri url = getContentResolver().insert(eventsUri, event);
        Toast.makeText(this, "Event Added To Your Calendar!", Toast.LENGTH_SHORT).show();
}
}

Upvotes: 3

Views: 2819

Answers (1)

Chris
Chris

Reputation: 2362

You need to insert an entry into CalendarContract.Reminders, e.g.

public void addEventToCalendar(String EventTitle, String EventDescription, String EventLocation, int EventStartDateYear, int EventStartDateMonth, int EventStartDateDay, int EventEndDateYear, int EventEndDateMonth, int EventEndDateDay, int BeginHour, int BeginMin, int EndHour, int EndMin, Boolean AllDay, String EventFrequency) {
    Toast.makeText(this, "Adding Event To Your Calendar...", Toast.LENGTH_SHORT).show();
    ContentValues event = new ContentValues();
    Calendar startcalendar = Calendar.getInstance();
    Calendar endcalendar = Calendar.getInstance();
    startcalendar.set(EventStartDateYear, EventStartDateMonth, EventStartDateDay, BeginHour, BeginMin);
    endcalendar.set(EventStartDateYear, EventEndDateMonth, EventEndDateDay, EndHour, EndMin);
    event.put(CalendarContract.Events.CALENDAR_ID, 1);
    event.put(CalendarContract.Events.TITLE, EventTitle);
    event.put(CalendarContract.Events.DESCRIPTION, EventDescription);
    event.put(CalendarContract.Events.EVENT_LOCATION, EventLocation);
    event.put(CalendarContract.Events.DTSTART, startcalendar.getTimeInMillis());
    event.put(CalendarContract.Events.DTEND, endcalendar.getTimeInMillis());
    event.put(CalendarContract.Events.ALL_DAY, AllDay);
    event.put(CalendarContract.Events.HAS_ALARM, true);
    event.put(CalendarContract.Events.RRULE, EventFrequency);
    event.put(CalendarContract.Events.EVENT_TIMEZONE, "GMT-05:00");

    Uri url = getContentResolver().insert(CalendarContract.Events.CONTENT_URI, event);

    long eventId = Long.parseLong(url.getLastPathSegment());

    ContentValues reminder = new ContentValues();
    reminder.put(CalendarContract.Reminders.EVENT_ID, eventId);
    reminder.put(CalendarContract.Reminders.MINUTES, 10);
    reminder.put(CalendarContract.Reminders.METHOD, CalendarContract.Reminders.METHOD_ALERT);
    getContentResolver().insert(CalendarContract.Reminders.CONTENT_URI, reminder);

    Toast.makeText(this, "Event Added To Your Calendar!", Toast.LENGTH_SHORT).show();
}

Upvotes: 2

Related Questions