android developer tiny share-20170601

来源:互联网 发布:php 输出执行时间 编辑:程序博客网 时间:2024/06/05 09:40

今天继续讲android的日历事件ContentProvider,讲添加事件。

以下是android developer官网的讲解:


添加事件


当您的应用插入新事件时,我们建议您按照使用 Intent 插入事件中所述使用 INSERT Intent。不过,您可以在需要时直接插入事件。 本节描述如何执行此操作。

以下是插入新事件的规则:

  • 您必须加入 CALENDAR_ID 和 DTSTART。
  • 您必须加入 EVENT_TIMEZONE。如需获取系统中已安装时区 ID 的列表,请使用 getAvailableIDs()。 请注意,如果您按使用 Intent 插入事件中所述通过 INSERT Intent 插入事件,则此规则不适用 — 在该情形下,系统会提供默认时区。
  • 对于非重复事件,您必须加入 DTEND。
  • 对于重复事件,您必须加入 DURATION 以及 RRULE 或 RDATE。请注意,如果您按使用 Intent 插入事件中所述通过 INSERT Intent 插入事件,则此规则不适用 — 在该情形下,您可以将 RRULE 与 DTSTART 和 DTEND 结合使用,日历应用会自动将其转换为持续时间。
以下是一个插入事件的示例。为了简便起见,此操作是在 UI 线程内执行的。实际上,应该在异步线程中完成插入和更新,以便将操作移入后台线程。 如需了解详细信息,请参阅 AsyncQueryHandler。

long calID = 3;long startMillis = 0;long endMillis = 0;Calendar beginTime = Calendar.getInstance();beginTime.set(2012, 9, 14, 7, 30);startMillis = beginTime.getTimeInMillis();Calendar endTime = Calendar.getInstance();endTime.set(2012, 9, 14, 8, 45);endMillis = endTime.getTimeInMillis();...ContentResolver cr = getContentResolver();ContentValues values = new ContentValues();values.put(Events.DTSTART, startMillis);values.put(Events.DTEND, endMillis);values.put(Events.TITLE, "Jazzercise");values.put(Events.DESCRIPTION, "Group workout");values.put(Events.CALENDAR_ID, calID);values.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");Uri uri = cr.insert(Events.CONTENT_URI, values);// get the event ID that is the last element in the Urilong eventID = Long.parseLong(uri.getLastPathSegment());//// ... do something with event ID////

注:请注意以上示例如何在事件创建后捕获事件 ID。 这是获取事件 ID 的最简单方法。您经常需要使用事件 ID 来执行其他日历操作 — 例如,向事件添加参加者或提醒。