android developer tiny share-20170601

今天繼續講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 Uri
long eventID = Long.parseLong(uri.getLastPathSegment());
//
// ... do something with event ID
//
//

注:請注意以上示例如何在事件創建後捕獲事件 ID。 這是獲取事件 ID 的最簡單方法。您經常需要使用事件 ID 來執行其他日曆操作 — 例如,向事件添加參加者或提醒。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章