`
huaxin803
  • 浏览: 115565 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 日历提供器(一)

 
阅读更多
日历提供器是针对用户日历事件的一个资源库。日历提供器API允许你执行有关日历、、事件、会议、提醒等内容的查询、插入、更新、删除操作。

日历提供器API能够用于应用程序和同步适配器,规则的变化依赖于什么类型的程序制造了这个调用。本文重点关注应用程序怎样使用日历提供API。对于与同步适配器的不同的讨论,请看同步适配器。

通常,要读或写日历数据,应用程序的清单文件中必须包含“用户权限”一节中描述的适当的权限,为了让执行普通的的操作更加容易,日历提供器提供了一组在“日历Intent对象”一节中介绍的Intent对象。这些Intent对象携带了用户要日历提供器来插入、查看和编辑的事件。用户跟日历应用程序交互,然后返回到初始应用程序。这样你的应用程序不需要申请权限,也不需要提供查看或创建事件用的的用户界面。

基础

内容提供器保存数据并且使它对应用程序是可访问的。通常,通过Android平台(包括日历提供器)内容提供器以基于关系性数据库模型的表的集合的形式来暴露数据,每一行是一个记录,每一列是一种特定类型的数据。通过日历提供器API,应用程序和同步适配器能够获得对持有用户日历数据的数据库表的读写访问权限。

每个内容提供器都会公开一个公共的唯一标识它的数据集的URI(被封装成Uri对象)。一个内容提供器控制着多个数据集(多个表),给每个表都公开一个独立的URI。提供器的所有URI都以“content//”开头。这是作为由内容提供器控制的数据的标识。日历提供器给它的每个类(表)都定义了URI常量。这些URI的格式是<class>.CONTENT_URI。例如:EVENTS.CONTENT_URI.

图1显示了日历提供器的数据模型,它显示主表和把它们彼此联系到一起的字段。

pic

图1.日历提供器数据模型

一个用户能够有多个日历,并且不同的日历能够跟不同的账号类型进行关联。

CalendarContract类定义了日历和事件相关信息的数据模型。这种数据被保存在以下列出的多个表中。

表(类)

描述

CalendarContract.Calendars

这个表保存指定日历的信息,在这个表中每一行都包含一个单一日历的详细信息,如名字、颜色、同步信息等。

CalendarContract.Events

这个表保存了特定的事件信息。在这个表中每一行都有单一事件的信息,如事件的标题、位置、开始时间、结束时间等。这个事件能够发生一次或重复发生多次。会议、提醒和扩展的属性被保存的独立的表中,它们都有一个EVENT_ID跟Events表中的_ID进行关联。

CalendarContract.Instances

这个表保存一个事件每次发生的开始事件和结束时间。这个表中的每一行都代表了一个单一的已经发生了的事件。对于一次性事件这个表与Events表有1对1的映射,对于重复发送的事件,每次发生的结果都会自动的在这个表中生产一行。

CalendarContract.Attendees

这表保存事件的参与者信息。每行代表一个单一的事件参与者。它指定了参与者类型以及参与者对事件的参与响应

CalendarContract.Reminders

这个表保存了警告/提醒数据。每行代表一个事件的一个警告。一个事件能够有多个提醒。每个事件的最大提醒数据在MAX_REMINDERS中指定,它是由给定日历的同步适配器来设定的。在事件之前的几分中内来指定提醒,并且会有一个方法来判断如何对用户进行提醒。

日历提供器API被设计的灵活而且强大。重要的是它提供了良好的终端用户体验并且保护了日历和它的数据的完整性,因此在使用这些API时要记住以下事情:

1. 插入、更新、和查看日历事件:要直接从日历提供器中插入、修改、和读取事件,你需要适当的权限。但是,如果你不是要创建一个完整的日历应用程序或同步适配器,就没有必要申请这些权限。你能够使用由Android的日历应用程序支持的Intent对象来替代这些读写操作。当你使用Intent对象时,你的应用程序会把用户预填的表单发送给日历应用程序,让它执行期望的操作。执行完成后,会返回到你的应用程序。通过设计能够执行日历共同操作的应用程序,就可以给用户提供一致的、强大的用户界面。这是推荐的方法,有关更多的信息,请“看日历Intent对象”。

2. 同步适配器。同步适配器把用户设备上的日历数据跟另外的服务器或数据源同步。在CalendarContract.Calendars和CanlendarContract.Events表中,有一些保留给同步适配器使用的列。提供和应用程序不应该修改它们,直到它们被同步适配器访问时它们才可见。有关同步适配器的更多信息,请看“同步适配器”

用户权限

要读取日历数据,应用程序必须在清单文件中包括READ_CALENDAR权限。如果要删除、插入、或更新日历数据,就必须包含WRITE_CALENDAR权限。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"...>
    <uses-sdk android:minSdkVersion="14" />
    <uses-permission android:name="android.permission.READ_CALENDAR" />
    <uses-permission android:name="android.permission.WRITE_CALENDAR" />
    ...
</manifest>

注:本人转载系个人觉得翻译的很好,值得收藏,且自己回头看着方便。

如有兴趣请访问作者官方博客http://blog.csdn.net/FireOfStar


分享到:
评论

相关推荐

    一个Android日历管理器,提供向系统日历插入日历账户、查询日历账户.zip

    一个Android日历管理器,提供向系统日历插入日历账户、查询日历账户、添加修改删除日历事件以及事件提醒等功能,是时候为你的APP增加一个事件提醒功能啦! 软件开发设计:PHP、QT、应用软件开发、系统软件开发、移动...

    Android 日历 年月选择器

    通过以上步骤,我们可以实现一个功能完备且易用的“Android日历年月选择器”。这个组件可以广泛应用于预约系统、日程安排或者任何需要用户选择年月的场景。同时,它体现了Android开发中的自定义组件设计、数据绑定、...

    android日历demo

    本示例"android日历DemoCalendar"提供了一个完整的日历应用实例,适用于初学者和开发者学习使用。下面我们将详细探讨这个Demo中涉及的关键知识点。 1. **Android Calendar API**:Android系统提供了Calendar API,...

    Android日历可左右活动上下定位收缩

    "Android日历可左右活动上下定位收缩"这个项目的核心在于实现一个高度自定义的日历控件,以下将详细解释实现这一功能的关键知识点。 首先,我们需要了解Android的View体系结构。在Android中,自定义视图通常继承自...

    Android日历行程.rar

    这个"Android日历行程"的压缩包文件可能包含了关于如何在Android平台上操作和开发日历应用的相关资料,比如`Calendar_01`可能是一个文档或者源代码,详细讲解了Android日历API的使用。 Android的日历API提供了丰富...

    Android日历签到

    综上所述,实现“Android日历签到”功能,需要掌握Android日历API的使用,包括获取日历权限、查询日历源、创建和管理日历事件,以及在UI上展示签到信息。通过这一系列步骤,用户就能在自己的Android设备上方便地进行...

    Android横向滑动日历

    在Android开发中,实现一个横向滑动的日历视图是一个常见的需求,特别是在设计用户界面时,需要简洁且直观地展示日期。"Android横向滑动日历"是一个这样的示例项目,它专注于创建一个只显示一行日历的轻量级组件。...

    Android日历

    在Android平台上,日历功能是移动设备不可或缺的一部分,它允许用户管理日程、安排会议以及跟踪重要日期。本文将深入探讨Android...提供的"Android日历"源代码可以作为一个学习起点,帮助你更好地理解和实践这些概念。

    Android 使用RecycleView打造自定义日历

    最后,`CalendarRecycleView`很可能是一个包含整个日历逻辑的主类或者布局文件,它将RecycleView与适配器、数据源、日历工具类等组件整合在一起,提供了一个完整的日历视图解决方案。 总的来说,通过学习这个项目,...

    一款功能齐全的android自定义日历

    在Android平台上,自定义日历应用的开发是一项技术性较强的工作,它涉及到多个技术领域,如用户界面设计、事件管理...通过深入理解和运用这个库,开发者可以打造出满足用户需求,具有高度定制化特点的Android日历应用。

    android 日历、日程记录

    在Android平台上,日历和日程记录是两个重要的功能,它们可以帮助用户管理时间,安排活动,提高...而"Calendar_05"可能是一个关于这一主题的代码示例或者教程资源,可以下载学习,以加深对Android日历功能开发的理解。

    Android日历+记事本源码

    这个“Android日历+记事本源码”项目,正是实现了这样的功能,它将日历组件与记事本功能巧妙地结合在一起,为用户提供了一个实用的工具。 首先,我们来详细了解一下日历功能的实现。在Android中,日历功能主要通过`...

    Android 日历、Android 农历日历 Android 日历节假日

    以下是对标题“Android日历、Android农历日历、Android日历节假日”以及描述中所述知识点的详细阐述。 1. **Android日历API**: Android提供了`android.provider.CalendarContract`类,它是Android系统日历服务的...

    android 日历的 demo 项目

    "android 日历的 demo 项目" 提供了一个完整的Android应用程序示例,帮助开发者理解和实现日历相关的功能。以下是对这个项目的详细解读: 1. **日历API**: Android系统提供了`android.app.CalendarContract`类,...

    android日历的实现

    总之,实现一个Android日历功能涉及多个方面,包括UI布局、日期处理逻辑、事件处理、性能优化和兼容性考虑。通过自定义控件,你可以根据需求打造出独特且功能完善的日历组件。在实际开发过程中,不断调试和优化,...

    android日历可以安排工作

    "android日历可以安排工作"这一特性,使得用户能够在移动设备上方便地创建、编辑和查看工作相关的日程,提高效率。 首先,Android日历API是开发者用于构建与日历数据交互的应用的重要工具。从Android 1.6(Donut)...

    android 日历控件源码.rar

    "android 日历控件源码.rar"是一个包含Android日历控件源代码的压缩包,用于帮助开发者深入理解日历控件的工作原理,并可以根据需求进行自定义修改。以下是关于Android日历控件的详细知识点: 1. **日历API**:...

    自定义实现Android日历

    在Android平台上,自定义日历视图是一种常见的需求,它能够提供更为个性化和功能丰富的用户体验。Caldroid是一个流行的开源库,专为Android设计,用于创建美观且易用的日历组件。通过Caldroid,开发者可以轻松地在...

    Android-android可自定义日历方案支持农历自定义日历控件排班左右滑动周月切换跳转到指定日期等功能

    同时,也可以提供一个日期选择器,让用户直接在日历上选择。 在提供的压缩包文件`chenyongci-Android-Week-Calendar-ce2d5b0`中,可能包含了`chenyongci`开发者实现的周日历项目源代码。通过研究这个项目,你可以...

Global site tag (gtag.js) - Google Analytics