[android] add event to calendar

String projection[] = { "_id" };
Uri calendars = Uri.parse("content://com.android.calendar/calendars");

ContentResolver contentResolver = getContentResolver();
Cursor managedCursor = contentResolver.query(calendars, projection, null, null, null);
managedCursor.moveToFirst();
String calID = managedCursor.getString(0);
managedCursor.close();

먼저 이벤트가 속할 캘린더의 id를 찾아온다.

 

 

long startMillis = 0;
long endMillis = 0;

Calendar beginTime = Calendar.getInstance();
beginTime.set(2013, 10, 24, 20, 10); // 2013년 11월 24일 20시 10분
startMillis = beginTime.getTimeInMillis();

Calendar endTime = Calendar.getInstance();
endTime.set(2013, 10, 25, 10, 45); // 2013년 11월 25일 10시 45분
endMillis = endTime.getTimeInMillis();

ContentValues values = new ContentValues();
TimeZone timeZone = TimeZone.getDefault();
values.put(CalendarContract.Events.DTSTART, startMillis);
values.put(CalendarContract.Events.DTEND, endMillis);
values.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID());
values.put(CalendarContract.Events.TITLE, "김장하기");
values.put(CalendarContract.Events.CALENDAR_ID, calID);
Uri eventUri = getContentResolver().insert(CalendarContract.Events.CONTENT_URI, values);
long eventID = Long.parseLong(eventUri.getLastPathSegment());

이벤트를 등록한다.

eventID를 이용해서 알림을 등록하거나 할 수 있다.(아쉽게도 내가 정한 사운드파일을 재생하게 할 수는 없다)

 

<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.READ_CALENDAR" />