Android 日曆提供器(一)

日曆提供器是針對用戶日曆事件的一個資源庫。日曆提供器API容許你執行有關日曆、、事件、會議、提醒等內容的查詢、插入、更新、刪除操做。android

日曆提供器API可以用於應用程序和同步適配器,規則的變化依賴於什麼類型的程序製造了這個調用。本文重點關注應用程序怎樣使用日曆提供API。對於與同步適配器的不一樣的討論,請看同步適配器。數據庫

一般,要讀或寫日曆數據,應用程序的清單文件中必須包含「用戶權限」一節中描述的適當的權限,爲了讓執行普通的的操做更加容易,日曆提供器提供了一 組在「日曆Intent對象」一節中介紹的Intent對象。這些Intent對象攜帶了用戶要日曆提供器來插入、查看和編輯的事件。用戶跟日曆應用程序 交互,而後返回到初始應用程序。這樣你的應用程序不須要申請權限,也不須要提供查看或建立事件用的的用戶界面。服務器

基礎spa

內容提供器保存數據而且使它對應用程序是可訪問的。一般,經過Android平臺(包括日曆提供器)內容提供器以基於關係性數據庫模型的表的集合的 形式來暴露數據,每一行是一個記錄,每一列是一種特定類型的數據。經過日曆提供器API,應用程序和同步適配器可以得到對持有用戶日曆數據的數據庫表的讀 寫訪問權限。設計

每一個內容提供器都會公開一個公共的惟一標識它的數據集的URI(被封裝成Uri對象)。一個內容提供器控制着多個數據集(多個表),給每一個表都公開 一個獨立的URI。提供器的全部URI都以「content//」開頭。這是做爲由內容提供器控制的數據的標識。日曆提供器給它的每一個類(表)都定義了 URI常量。這些URI的格式是<class>.CONTENT_URI。例如:EVENTS.CONTENT_URI.xml

圖1顯示了日曆提供器的數據模型,它顯示主表和把它們彼此聯繫到一塊兒的字段。對象

pic

圖1.日曆提供器數據模型事件

 一個用戶可以有多個日曆,而且不一樣的日曆可以跟不一樣的帳號類型進行關聯。utf-8

CalendarContract類定義了日曆和事件相關信息的數據模型。這種數據被保存在如下列出的多個表中。ci

表(類)

描述

CalendarContract.Calendars

這個表保存指定日曆的信息,在這個表中每一行都包含一個單一日曆的詳細信息,如名字、顏色、同步信息等。

CalendarContract.Events

這個表保存了特定的事件信息。在這個表中每一行都有單一事件的信息,如事件的標題、位置、開始時間、結束時間等。這個事件可以發生一次或重複發生屢次。會議、提醒和擴展的屬性被保存的獨立的表中,它們都有一個EVENT_ID跟Events表中的_ID進行關聯。

CalendarContract.Instances

這個表保存一個事件每次發生的開始事件和結束時間。這個表中的每一行都表明了一個單一的已經發生了的事件。對於一次性事件這個表與Events表有1對1的映射,對於重複發送的事件,每次發生的結果都會自動的在這個表中生產一行。

CalendarContract.Attendees

這表保存事件的參與者信息。每行表明一個單一的事件參與者。它指定了參與者類型以及參與者對事件的參與響應

CalendarContract.Reminders

這個表保存了警告/提醒數據。每行表明一個事件的一個警告。一個事件可以有多個提醒。每一個事件的最大提醒數據在MAX_REMINDERS中指定,它是由給定日曆的同步適配器來設定的。在事件以前的幾分中內來指定提醒,而且會有一個方法來判斷如何對用戶進行提醒。

 

日曆提供器API被設計的靈活並且強大。重要的是它提供了良好的終端用戶體驗而且保護了日曆和它的數據的完整性,所以在使用這些API時要記住如下事情:

1.  插入、更新、和查看日曆事件:要直接從日曆提供器中插入、修改、和讀取事件,你須要適當的權限。可是,若是你不是要建立一個完整的日曆應用程序或同步適配 器,就沒有必要申請這些權限。你可以使用由Android的日曆應用程序支持的Intent對象來替代這些讀寫操做。當你使用Intent對象時,你的應 用程序會把用戶預填的表單發送給日曆應用程序,讓它執行指望的操做。執行完成後,會返回到你的應用程序。經過設計可以執行日曆共同操做的應用程序,就能夠 給用戶提供一致的、強大的用戶界面。這是推薦的方法,有關更多的信息,請「看日曆Intent對象」。

2.  同步適配器。同步適配器把用戶設備上的日曆數據跟另外的服務器或數據源同步。在CalendarContract.Calendars和 CanlendarContract.Events表中,有一些保留給同步適配器使用的列。提供和應用程序不該該修改它們,直到它們被同步適配器訪問時它 們纔可見。有關同步適配器的更多信息,請看「同步適配器」

用戶權限

要讀取日曆數據,應用程序必須在清單文件中包括READ_CALENDAR權限。若是要刪除、插入、或更新日曆數據,就必須包含WRITE_CALENDAR權限。

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"...>    <uses-sdk android:minSdkVersion="14" />    <uses-permission android:name="android.permission.READ_CALENDAR" />    <uses-permission android:name="android.permission.WRITE_CALENDAR" />    ...</manifest>

相關文章
相關標籤/搜索