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

2023-11-27

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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何向 Android 添加新的手机日历? 的相关文章

随机推荐