Android调用系统日历插入日程

时间:2021-10-01 16:45:45

在我之前的一个项目里面,我用到了系统日历,实现的是将一个事件插入到系统日历的日程里面,并且在指定日期进行了提醒。

首先,要了解一下CalendarProvider,这个知识点大家可以上网百度得到,我就不多说了,我在项目里面用到了CalendarContract.Events这个表格。这个表保存了特定的事件信息。在这个表中每一行都有单一事件的信息,如事件的标题、位置、开始时间、结束时间等。这个事件能够发生一次或重复发生多次。会议、提醒和扩展的属性被保存的独立的表中,它们都有一个EVENT_ID跟Events表中的_ID进行关联。具体的表格内容如下:

常量 描述
CALENDAR_ID 事件所属的日历的_ID
ORGANIZER 事件的组织者(所有者)的电子邮件
TITLE 事件的标题
EVENT_LOCATION 事件发生的地点
DESCRIPTION 事件的描述
DTSTART 事件的启动时间,使用从纪元开始的UTC毫秒计时
DTEND 事件的结束时间,使用从纪元开始的UTC毫秒计时
EVENT_TIMEZONE 事件所针对的时区
EVENT_END_TIMEZONE 针对事件结束时间的时区
DURATION 用RFC5545格式表示的事件持续时间,例如“PT1H”表示事件持续1小时的状态,“P2W”指明2周的持续时间。
ALL_DAY 1指明这个事件会占用整天时间(由本地时区定义的时间);0指明它是一个普通的事件,可以在一天的任何时间开始和结束
RRULE 格式化的事件复发规则(RFC5545)。如“FREQ=WEEKLY;COUNT=10;WKST=SU”。
RDATE 事件的复发日期。通常RDATE要联合RRULE一起使用来定义一个重复发生的事件的合集。
AVAILABILITY If this event counts as busy time or is free time that can be scheduled over.
GUESTS_CAN_MODIFY 参与者是否能够修改事件
GUESTS_CAN_INVITE_OTHERS 参与者是否能够邀请其他参与者
GUESTS_CAN_SEE_GUESTS 参与者是否能够看到与会者列表

为了实现在项目中调用系统日历和插入日程,我们首先在AndroidManifest.xml文件中添加相关权限,如下:

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

然后在要插入日程的地方的代码如下:

如果想要删除一个日程,则插入如下代码:

其中,delete函数的第二个参数可以是Events表中任意一个常量,第三个参数则是该常量对应的值,注意,要作为

删除数据的标记,必须是在插入日程的时候用到该参数。

以上则是本篇博客的内容,希望能帮到大家,谢谢!