在我之前的一个项目里面,我用到了系统日历,实现的是将一个事件插入到系统日历的日程里面,并且在指定日期进行了提醒。
首先,要了解一下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表中任意一个常量,第三个参数则是该常量对应的值,注意,要作为
删除数据的标记,必须是在插入日程的时候用到该参数。
以上则是本篇博客的内容,希望能帮到大家,谢谢!