I have problem with adding events to Android Calendar.
My minimum SDK version is 7. I use Intent to add event, but problems is with various API.
I use this:
String eventUriString;
if (Build.VERSION.SDK_INT > 7)
eventUriString = "content://com.android.calendar/events";
else eventUriString = "content://calendar/events";
ContentValues eventValues = new ContentValues();
eventValues.put("calendar_id", 1);
eventValues.put("title", "title");
eventValues.put("description", desc);
eventValues.put("eventLocation", "");
long endDate = startDate + 1000 * 60 * 60;
eventValues.put("dtstart", MyClass.getDate());
eventValues.put("dtend", endDate);
eventValues.put("eventStatus", 0);
eventValues.put("visibility", 2);
eventValues.put("transparency", 0);
eventValues.put("hasAlarm", 0);
Uri eventUri = context.getContentResolver().insert(Uri.parse(eventUriString), eventValues);
long eventID = Long.parseLong(eventUri.getLastPathSegment());
to Edit some events I use:
String calendarUriBase = null;
long id = MyEvents.getID(p); //something ID from my another class
Uri calendars = Uri.parse("content://calendar/calendars");
Cursor managedCursor = null;
try {
managedCursor = managedQuery(calendars, null, null, null, null);
} catch (Exception e) {
// eat
}
if (managedCursor != null) {
calendarUriBase = "content://calendar/";
} else {
calendars = Uri.parse("content://com.android.calendar/calendars");
try {
managedCursor = managedQuery(calendars, null, null, null, null);
} catch (Exception e) {
// eat
}
if (managedCursor != null) {
calendarUriBase = "content://com.android.calendar/";
}
}
ContentValues event = new ContentValues();
event.put("title", "new Title");
Uri eventsUri = Uri.parse(calendarUriBase+"events");
Uri eventUri = ContentUris.withAppendedId(eventsUri, id);
getContentResolver().update(eventUri, event, null, null);
and it work on my phone (SE X8 with Android 2.3.7) but doesn’t work on SDK 14.
Is anywhere universal code, which I can use to add events to Calendar Android works on every various SDK? I have no idea how it make. I must use API 7 because my manager want. Have you any ideas how do that?
In ICS a new Calendar API is introduced so your code will not work in ICS.
New Public APIs in ICS
In order to support adding events to all calendars you can change your code like this –