調用Android內建日曆功能,android內建日曆
Android手機配備有一個內建的日曆應用程式。第三方應用程式可以利用日曆內容供應商介面讀取使用者的行事曆資訊和安排在日曆新的事件。這個日曆可以直接同步處理使用者的Google日曆。
不幸的是,沒有文檔和Android手機的日曆應用整合,因為有另外一個連絡人應用程式。相反,本文所提供的所有資訊,將會通過逆向工程的Google日曆內容供應商。該介面是受變化的,將會支援有限的功能。然而,日曆一體化可以成為一些類型的應用強大的功能。
本文的代碼測試之到Android 2.0 SDK版本。我們將發布一個更新如果有一個很大的轉變。我們沒有測試這個裝置,如早先的T - Mobile G1的(SDK的1.6)代碼。
訪問行事曆資料
為了支援添加到您的日曆的Android應用程式,您必須給你的應用程式添加以下許可權AndroidManifest.xml檔案:
Java代碼
- <uses-permission
- android:name="android.permission.READ_CALENDAR">
- </uses-permission>
- <uses-permission
- android:name="android.permission.WRITE_CALENDAR">
- </uses-permission>
註冊這些許可權允許您訪問Google登入使用者的行事曆資料,無需處理任何問題。該日曆應用程式未安裝在Android模擬器,因此所有的測試和開發必須在日曆應用程式實際完成安裝的裝置(使用模擬器將無法啟動相應的提供者)。日曆應用程式和內容供應商可在與Google服務,例如T - Mobile G1。
檢索使用者行事曆清單
使用者可能在日曆應用程式配置有很多名稱的日曆。例如,使用者可能有一個工作日曆(工作日曆有關的活動),家庭日曆(個人的)和假日日曆(法定假日)。
由使用者配置的日曆使用並訪問內容供應商介面。為了檢索使用者的行事曆清單,我們需要為適當Uri以及日曆內容供應商設計查詢,如下所示:
Java代碼
- String[] projection = new String[] { "_id", "name" };
- Uri calendars = Uri.parse("content://calendar/calendars");
- Cursor managedCursor =
- managedQuery(calendars, projection, null, null, null);
現在,這個查詢將返回所有日曆,包括那些平時不會用到的。為了得到一個活躍的行事曆清單單,我們需要在“選擇”設定為true的領域在內限制我們的查詢
Java代碼
- String[] projection = new String[] { "_id", "name" };
- Uri calendars = Uri.parse("content://calendar/calendars");
- Cursor managedCursor =
- managedQuery(calendars, projection, "selected=1", null, null);
我們現在檢索的行事曆清單。我們可以遍曆的結果如下:
Java代碼
- if (managedCursor.moveToFirst()) {
- String calName;
- String calId;
- int nameColumn = managedCursor.getColumnIndex("name");
- int idColumn = managedCursor.getColumnIndex("_id");
- do {
- calName = managedCursor.getString(nameColumn);
- calId = managedCursor.getString(idColumn);
- } while (managedCursor.moveToNext());
- }
一旦我們知道我們想要訪問的日曆,我們可以添加一個日曆事件。日曆事件有一些重要領域,其中包括如活動名稱,時間和地點以及設定的資訊,哪一項將被顯示在日曆。日曆事件可能是一次性或經常性的。
給日曆增加單一事件發生的情況
添加一個條目到特定的日曆,我們需要配置一個日曆項插入使用與ContentValues如下:
Java代碼
- ContentValues event = new ContentValues();
每個活動必須與特定日曆結合,所以,首先你會想到的是為此事件插入日曆標識符。
Java代碼
- event.put("calendar_id", calId);
然後,我們設定了有關事件,其中包括活動的標題,描述和位置弦樂領域的一些基本資料。
Java代碼
- event.put("title", "Event Title");
- event.put("description", "Event Desc");
- event.put("eventLocation", "Event Location");
有許多不同的配置選項來設定事件的時間和日期。
我們可以設定事件的開始和結束的資訊如下:
Java代碼
- long startTime = START_TIME_MS;
- long endTime = END_TIME_MS;
- event.put("dtstart", startTime);
- event.put("dtend", endTime);
如果我們增加了生日或假日,我們會設定一個全天事件的條目:
Java代碼
- event.put("allDay", 1); // 0 for false, 1 for true
這一資訊對於大多數項足夠了。但是,有一些其他有用的日曆項屬性。
例如,您可以設定事件狀態暫訂(0),確認(1)或取消(2):
Java代碼
- event.put("eventStatus", 1);
您可以控制可以看到它的可見度設定為預設值(0此事件),保密(1),私營(2),或公用(3):
Java代碼
- event.put("visibility", 0);
您可以控制日曆上事件是否消耗時間,通過設定其透明度,不透明(0)或透明(1)。
Java代碼
- event.put("transparency", 0);
您可以控制是否事件觸發警示,提醒如下:
Java代碼
- event.put("hasAlarm", 1); // 0 for false, 1 for true
一旦日曆事件配置正確,我們已經準備好使用ContentResolver插入到相應的開放新日曆的日曆事件項:
Java代碼
- Uri eventsUri = Uri.parse("content://calendar/events");
- Uri url = getContentResolver().insert(eventsUri, event);
該調用insert()方法接觸的日曆內容供應商,並試圖插入到相應的使用者的日曆項。如果您導航到日曆應用程式和啟動它,你應該看到您在適當的日曆中的日曆項。自日曆同步,你也看到日曆項線上,如果你在網路上使用的Google日曆。
添加一個定期事件的日曆
您也可以設定定期日曆事件。為了做到這一點,你必鬚根據當前的規則添加更多的欄位。規則是根據RFC2445。
結論
Android應用程式可以整合與使用者的日曆密切的許多Android裝置。該日曆功能是通過一條內容供應商的介面,允許第三方應用程式訪問行事曆資訊,並添加新日曆項。
android中怎調用系統日曆
有問題,問度娘
我的畢業設計是android日曆,可以添加事件,網上說可以調用內建日曆,內建日曆是什 ? 程式小白詳解
說實話
這個畢業設計沒什麼價值