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/