background image

Android 日程表应用整合开发实例

Android 手机一般都内置一个日程表(Calendar)应用。第三方应用程序可以利用日程表内

容提供程序的接口,实现阅读用户日程安排信息和在日程表中安排新事件。这个日程表应用
可以直接与用户的谷歌日程表应用实现内容同步。

不幸的是,并没有任何文档来描述在

Android 上整合日程表应用,或者类似联系人应

用的其它应用。本文中的所有信息均来自于对谷歌日程表应用内容提供程序的逆向工程。这
个接口经常发生变化,而且支持的功能有限。但是,对某些类型的应用程序来说,整合日程
表应用可能是一个非常强大的功能。

本文中的代码已经在

Android 2.0 SDK 以前的版本上进行过测试。由于目前市场上没有

Android 2.0 手机,我们还不能确保它可以运行在哪些即将发布的设备上。我们在 T-Mobile 
G1(SDK 1.6)上测试运行了这些代码。

访问日程表数据

为了向你的

Android 应用添加日程表支持,你必须增加以下代码到你应用程序的

AndroidManifest.xml 文件中:

1

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

2

  </uses-permission> <uses-permission 

3

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

登记这些许可后,你可以访问用户的日程表数据,而无需处理任何谷歌登录问题。由于

日程表应用没有被安装在

Android 模拟器中,因此所有测试和开发工作必须在安装了日程

表应用的真机上进行,使用模拟器无法启动相应的提供程序。日程表应用和内容提供程序被
包含在支持谷歌服务的

Android 手机中,诸如 T-Mobile G1。

检索用户日程表事件列表

每个用户可能在日程表应用中具有众多指定的日程安排。举例来说,一个用户可能同时

拥有工作日程安排、个人日程安排和节日日程安排。

通过使用内容提供程序接口,可实现访问用户配置的日程安排。为了取回用户日程安排

的事件列表,我们需要为日程表内容提供程序编写一个合适的

Uri 查询,如下所示:

4

String[]  projection  =  new  String[]  {  "_id",  "name"  }; 

 Uri  calendars  = 

Uri.parse("content://calendar/calendars");  

5

       Cursor managedCursor =  

6

  managedQuery(calendars, projection, null, null, null);