Android上的日历应用程序可以合并多个单独的日历:本地电话日历,Google日历等.
如何在Android手机中添加新的日历?我想动态地生成该日历中的事件,而不需要访问任何在线资源(如Google).
编辑:我想支持Android 1.5和2.3.4手机.有一天我可能会更新到4.0的新手机,但谁知道什么时候会…
解决方法
我刚刚设法使用ICS的新API添加了一个日历. Stefan的答案有帮助,但是为了能够写入所有的列,你必须做同步适配器的操作.您可以使用CalendarContract.ACCOUNT_TYPE_LOCAL从普通应用程序中执行此操作.以下代码应该适用于ICS.也许一些列值不正确.查看CalendarContract.Calendars的文档.不幸的是,我无法帮助您使用较旧的Android版本,但是CalendarContract仅用于某些常量字符串值.也许这些也可以在旧版本上工作.
Uri calUri = CalendarContract.Calendars.CONTENT_URI; ContentValues cv = new ContentValues(); cv.put(CalendarContract.Calendars.ACCOUNT_NAME,yourAccountName); cv.put(CalendarContract.Calendars.ACCOUNT_TYPE,CalendarContract.ACCOUNT_TYPE_LOCAL); cv.put(CalendarContract.Calendars.NAME,yourInternalName); cv.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME,yourDisplayName); cv.put(CalendarContract.Calendars.CALENDAR_COLOR,yourColor); cv.put(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL,CalendarContract.Calendars.CAL_ACCESS_OWNER); cv.put(CalendarContract.Calendars.OWNER_ACCOUNT,true); cv.put(CalendarContract.Calendars.VISIBLE,1); cv.put(CalendarContract.Calendars.SYNC_EVENTS,1); calUri = calUri.buildUpon() .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER,"true") .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME,ACCOUNT_NAME) .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE,CalendarContract.ACCOUNT_TYPE_LOCAL) .build(); Uri result = this.getContentResolver().insert(calUri,cv);