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" />