今天继续讲android的Calendar ContentProvider,讲通过Intent来实现查询、修改、插入操作。之前都是直接访问日历相关的ContentProvider,这样可以更加灵活控制,但是,也增加了复杂性,并且,需要声明读取和写入日历数据的权限。
以下是android developer官网的讲解:
日历 Intent
您的应用不需要读取和写入日历数据的权限。它可以改用 Android 的日历应用支持的 Intent 将读取和写入操作转到该应用执行。下表列出了日历提供程序支持的 Intent:
操作 | URI | 说明 | Extra |
---|---|---|---|
VIEW | content://com.android.calendar/time/<ms_since_epoch> 您还可以通过 CalendarContract.CONTENT_URI 引用 URI。如需查看使用该 Intent 的示例,请参阅使用 Intent 查看日历数据。 | 打开日历后定位到 <ms_since_epoch> 指定的时间。 | 无。 |
VIEW | content://com.android.calendar/events/<event_id> 您还可以通过 Events.CONTENT_URI 引用 URI。如需查看使用该 Intent 的示例,请参阅使用 Intent 查看日历数据。 | 查看 <event_id> 指定的事件。 | CalendarContract.EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_END_TIME |
EDIT | content://com.android.calendar/events/<event_id> 您还可以通过 Events.CONTENT_URI 引用 URI。如需查看使用该 Intent 的示例,请参阅使用 Intent 编辑事件。 | 编辑 <event_id> 指定的事件。 | CalendarContract.EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_END_TIME |
EDIT INSERT | content://com.android.calendar/events 您还可以通过 Events.CONTENT_URI 引用 URI。如需查看使用该 Intent 的示例,请参阅使用 Intent 插入事件。 | 创建事件。 | 下表列出的任一 Extra。 |
下表列出了日历提供程序支持的 Intent Extra:
Intent Extra | 说明 |
---|---|
Events.TITLE | 事件的名称。 |
CalendarContract.EXTRA_EVENT_BEGIN_TIME | 事件开始时间,以从公元纪年开始计算的毫秒数表示。 |
CalendarContract.EXTRA_EVENT_END_TIME | 事件结束时间,以从公元纪年开始计算的毫秒数表示。 |
CalendarContract.EXTRA_EVENT_ALL_DAY | 一个布尔值,表示事件属于全天事件。值可以是 true 或 false。 |
Events.EVENT_LOCATION | 事件的地点。 |
Events.DESCRIPTION | 事件描述。 |
Intent.EXTRA_EMAIL | 逗号分隔值形式的受邀者电子邮件地址列表。 |
Events.RRULE | 事件的重复发生规则。 |
Events.ACCESS_LEVEL | 事件是私人性质还是公共性质。 |
Events.AVAILABILITY | 将此事件视为忙碌时间还是可调度的空闲时间。 |
下一节描述如何使用这些 Intent。