android developer tiny share-20170520

来源:互联网 发布:在淘宝卖假货会坐牢吗 编辑:程序博客网 时间:2024/06/05 14:14

今天继续讲android的ContentProvider之Calendar ContentProvider,会介绍下Calendar相关的数据库表的设计,你会看到该设计的灵活、强大。

以下是android developer官网的讲解:




用户可以有多个日历,可将不同类型的日历与不同类型的帐户(Google 日历、Exchange 等)关联。

CalendarContract 定义了日历和事件相关信息的数据模型。这些数据存储在以下所列的若干表中。

表(类)说明CalendarContract.Calendars此表储存日历特定信息。 此表中的每一行都包含一个日历的详细信息,例如名称、颜色、同步信息等。CalendarContract.Events此表储存事件特定信息。 此表中的每一行都包含一个事件的信息 — 例如事件标题、地点、开始时间、结束时间等。 事件可一次性发生,也可多次重复发生。参加者、提醒和扩展属性存储在单独的表内。它们各自具有一个 EVENT_ID,用于引用 Events 表中的 _ID。CalendarContract.Instances此表储存每个事件实例的开始时间和结束时间。 此表中的每一行都表示一个事件实例。 对于一次性事件,实例与事件为 1:1 映射。对于重复事件,会自动生成多个行,分别对应多个事件实例。CalendarContract.Attendees此表储存事件参加者(来宾)信息。 每一行都表示事件的一位来宾。 它指定来宾的类型以及事件的来宾出席响应。CalendarContract.Reminders此表储存提醒/通知数据。 每一行都表示事件的一个提醒。一个事件可以有多个提醒。 每个事件的最大提醒数量在 MAX_REMINDERS 中指定,后者由拥有给定日历的同步适配器设置。 提醒以事件发生前的分钟数形式指定,其具有一个可决定用户提醒方式的方法。

Calendar Provider API 以灵活、强大为设计宗旨。提供良好的最终用户体验以及保护日历及其数据的完整性也同样重要。 因此,请在使用该 API 时牢记以下要点:


  • 插入、更新和查看日历事件。要想直接从日历提供程序插入事件、修改事件以及读取事件,您需要具备相应权限。不过,如果您开发的并不是完备的日历应用或同步适配器,则无需请求这些权限。您可以改用 Android 的日历应用支持的 Intent 将读取操作和写入操作转到该应用执行。当您使用 Intent 时,您的应用会将用户转到日历应用,在一个预填充表单中执行所需操作。 完成操作后,用户将返回您的应用。通过将您的应用设计为通过日历执行常见操作,可以为用户提供一致、可靠的用户界面。 这是推荐您采用的方法。 如需了解详细信息,请参阅日历 Intent。
  • 同步适配器。同步适配器用于将用户设备上的日历数据与其他服务器或数据源同步。 在 CalendarContract.Calendars 和 CalendarContract.Events 表中,预留了一些供同步适配器使用的列。提供程序和应用不应修改它们。 实际上,除非以同步适配器形式进行访问,否则它们处于不可见状态。 如需了解有关同步适配器的详细信息,请参阅同步适配器。



原创粉丝点击