android 添加日历事件并通知用户
时间: 2023-07-18 15:30:14 浏览: 59
要在 Android 中添加日历事件并通知用户,可以使用以下步骤:
1. 获取日历实例
```
Calendar cal = Calendar.getInstance();
```
2. 创建日历事件
```
ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
values.put(CalendarContract.Events.DTSTART, startMillis);
values.put(CalendarContract.Events.DTEND, endMillis);
values.put(CalendarContract.Events.TITLE, "Event Title");
values.put(CalendarContract.Events.DESCRIPTION, "Event Description");
values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
values.put(CalendarContract.Events.CALENDAR_ID, 1);
Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values);
// 获取新事件的 ID
long eventID = Long.parseLong(uri.getLastPathSegment());
```
3. 创建提醒
```
ContentValues reminders = new ContentValues();
reminders.put(CalendarContract.Reminders.MINUTES, 10);
reminders.put(CalendarContract.Reminders.EVENT_ID, eventID);
reminders.put(CalendarContract.Reminders.METHOD, CalendarContract.Reminders.METHOD_ALERT);
Uri uri2 = cr.insert(CalendarContract.Reminders.CONTENT_URI, reminders);
```
此处设置了一个在事件开始前 10 分钟提醒的提醒。
4. 启动日历应用程序
```
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("content://com.android.calendar/events/" + eventID));
startActivity(intent);
```
5. 发送通知
```
Intent notificationIntent = new Intent(Intent.ACTION_VIEW);
notificationIntent.setData(Uri.parse("content://com.android.calendar/events/" + eventID));
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle("Event Title")
.setContentText("Event Description")
.setContentIntent(contentIntent)
.setAutoCancel(true)
.setPriority(NotificationCompat.PRIORITY_HIGH);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(notificationId, builder.build());
```
这将在用户的通知栏中显示一个通知,用户可以点击它来查看事件的详细信息。
请注意,这段代码需要在 Android 4.0 及以上版本上运行。此外,您需要在 AndroidManifest.xml 文件中添加以下权限:
```
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
```