Первый вопрос: Доступ к календарю: это основано на URI содержимого: // calendar / calendars.
Во-первых, убедитесь, что ваше приложение определяет разрешение android.permission.READ_CALENDAR.
Получить идентификаторы календарей и отображаемые имена:
ContentResolver myContentResolver = getContentResolver();
final Cursor cursor = myContentResolver.query(Uri.parse("content://calendar/calendars"),
(new String[] { "_id", "displayName", "selected" }), null, null, null);
while (cursor.moveToNext()) {
final String _id = cursor.getString(0);
final String displayName = cursor.getString(1);
final Boolean selected = !cursor.getString(2).equals("0");
}
Работа над конкретным календарем:
Uri.Builder myUriBuilder = Uri.parse("content://calendar/instances/when").buildUpon();
long currentTime = new Date().getTime();
ContentUris.appendId(myUriBuilder , currentTime - DateUtils.WEEK_IN_MILLIS);
ContentUris.appendId(myUriBuilder, currentTime + DateUtils.WEEK_IN_MILLIS);
Cursor eventCursor = myContentResolver.query(myUriBuilder.build(),
new String[] { "title", "begin", "end", "allDay"}, "Calendars._id=" + id,
null, "startDay ASC, startMinute ASC");
while (eventCursor.moveToNext()) {
// fields:
// Event title - String - 0
String eventTitle = eventCursor.getString(0);
// Event start time - long - 1
Date startTime = new Date(eventCursor.getLong(1));
// Event end time - login - 2
Date endTime = new Date(eventCursor.getLong(2));
// Is it an All Day Event - String - 3 (0 is false, 1 is true)
Boolean allDay = !eventCursor.getString(3).equals("0");
}
Второй вопрос: планирование событий:
По сути, вы должны использовать класс AlarmManager, подробности смотрите в Android SDK.
Пример установки события через 3 часа:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.HOUR, 3);
Intent intent = new Intent(this, MyAlarmHandler.class);
intent.putExtra("alarm_message", "Wake up!");
int requestCode = 3824723; // this is not currently used by Android.
PendingIntent pIntent = PendingIntent.getBroadcast(this, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pIntent);
Третий вопрос: да, я предлагаю подход PHP