有感于Android Calendar开发

Android虽然看起来很火,但是API可以说还不是很完善,变化大,有些功能还暂时木有提供。
比如Calendar相关的接口,目前还不够稳定,所以还没有对外开放,在模拟器上都还没有CalendarProvider和Calendar,虽然可以想尽办法给他安装上去,但还是有些问题。
前段时间为了开发基于Calendar的第三方应用重新编译了Calendar加入到android.jar,后来进行了一半没有这样做了,干脆直接自己写,虽然也是照着Calendar和CalendarProvider源码抄过来。

由于开放的原因,目前设备制造商是各自为政来定制自己的Calendar应用,比如Moto Milestone就必须要在登录Google账户的前提下才能使用Calendar,HTC、Samsung以及Huawei等等都有了一个自己内置的账户,所以他们把Calendar建立在自己的内置账户上,手机不用登录Google账户也可以使用Calendar,这样基于Calendar的第三方应用就格外难实现,又要不损坏原有系统的数据,保持原有功能能用,又要基于原有系统的数据开发自己的功能。

目前在参考了另外一些应用的实现之后,算是对这些情况有些了解了,等开发完成再整理再来完整的分析下。

2 thoughts on “有感于Android Calendar开发”

    1. @cqyu112 具体的话,看你要写什么应用
      如果只是简单的对Calendar进行读写的话,还是比较简单的

      1、首先你要搞清楚它的数据的结构,你可以在模拟器中把日程安排的数据库文件给pull出来,它就是个sqlite的文件,然后查看它的结构,自己理清楚下

      2、然后你就要开始写读写操作方法了,参考我这篇短文中说的CalendarProvider和Calendar这两个应用的源码,都是官方开源的,找找应该可以下载到

      一般来说Android当中提供数据访问都是通过ContentProvider来完成的,比如A应用想访问B应用的数据,都是通过B应用提供的ContentProvider来完成的,实际就是一个访问的URI(我这个做的比较早,当时在模拟器的Calendar当中好像还没有提供这个ContentProvider),现在新的版本中不知道有没有提供

      我这里没有详细写明Calendar具体的开发,你可以参考我以前写的一个做联系人应用的例子,跟这应该还是有点类似,如果你熟悉Android开发的话,应该还是比较容易理解的
      【解剖Android联系人之一,基于2.1】
      http://lucane.iteye.com/blog/859231

      【解剖Android联系人之二,基于2.1】
      http://lucane.iteye.com/blog/867125

      【解剖Android联系人之三,基于2.1】
      http://lucane.iteye.com/blog/875975

      当然这有些代码不是最好的,因为很多原因没有深入的优化,精简,希望对你有所帮助,如果有疑问请直接留言!

Leave a Reply

Your email address will not be published. Required fields are marked *