android - 如何向 Android 添加新的手机日历?

标签 android calendar

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);

关于android - 如何向 Android 添加新的手机日历?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8881851/

相关文章:

java - 日历中的事件列表

java - EST 和 America/New_York 时区之间的差异

c# - 修复 SubSonic 2.2 日历,当控件不可见时如何获取 RegisterClientScriptIninclude 调用以进行渲染?

android - 更改 Android-Seekbar 的大小?

java - 如何从 JNI 中的线程内部调用 JAVA 方法

android - 更改 Android PopupMenu 文本颜色不起作用

android - 如何在 Http post Android 中取得进展?

java - 如何获取某个月份的所有日期

c# - 有没有办法删除日历控件中涂黑的日期以便再次选择它们?

android - 如何禁用 Android 键盘上的自动更正栏?