📅  最后修改于: 2023-12-03 15:08:33.425000             🧑  作者: Mango
在 Android 应用中设置日历事件,可以让用户轻松地添加、编辑、删除事件。本文将介绍如何在 Android 应用中使用代码来设置日历事件。
在 AndroidManifest.xml 文件中添加以下权限:
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
然后,在运行时请求权限:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CALENDAR) != PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CALENDAR, Manifest.permission.WRITE_CALENDAR}, 0);
}
}
// 获取日历 ID
String[] projection = new String[]{CalendarContract.Calendars._ID};
Cursor cursor = getContentResolver().query(CalendarContract.Calendars.CONTENT_URI,
projection, CalendarContract.Calendars.ACCOUNT_NAME + " = ? AND " + CalendarContract.Calendars.ACCOUNT_TYPE + " = ?",
new String[]{accountName, CalendarContract.ACCOUNT_TYPE_LOCAL}, null);
if (cursor == null || !cursor.moveToNext()) {
return;
}
long calendarId = cursor.getLong(0);
// 创建事件
ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
values.put(CalendarContract.Events.TITLE, "测试日历事件");
values.put(CalendarContract.Events.DESCRIPTION, "这是一个测试事件");
values.put(CalendarContract.Events.EVENT_LOCATION, "北京市");
values.put(CalendarContract.Events.DTSTART, startTimeMillis);
values.put(CalendarContract.Events.DTEND, endTimeMillis);
values.put(CalendarContract.Events.CALENDAR_ID, calendarId);
values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values);
long eventId = Long.parseLong(uri.getLastPathSegment());
ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
values.put(CalendarContract.Events.TITLE, "更新测试事件");
values.put(CalendarContract.Events.DESCRIPTION, "这是一个更新后的测试事件");
values.put(CalendarContract.Events.EVENT_LOCATION, "上海市");
values.put(CalendarContract.Events.DTSTART, startTimeMillis);
values.put(CalendarContract.Events.DTEND, endTimeMillis);
Uri updateUri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, eventId);
int rows = cr.update(updateUri, values, null, null);
ContentResolver cr = getContentResolver();
Uri deleteUri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, eventId);
cr.delete(deleteUri, null, null);
在本文中,我们介绍了如何在 Android 应用中设置日历事件。首先,需要请求日历访问权限;然后,使用代码创建、更新、删除日历事件。希望本文能对你有所帮助。