android Content Provider詳解五

來源:互聯網
上載者:User

契約類
契約類定義了協助應用使用content URIs的常量,列名,intent action們,和其它contentprovider特性。契約類不會被provider自動包含;provider開發人員必須定義它們然後使它們對其它開發人員生效。Android平台中包含的很多provider都在包android.provider中有對應的契約類。

例如,使用者字典Provider具有一個契約類UserDictionary,它包含了contentURI和columnname常量。"words"表的contentURI定義在常量UserDictionary.Words.CONTENT_URI上。UserDictionary.Words類也包含了列名常量,在下面的程式碼片段中就用到了。舉例,一個查詢projection可以如下定義:

String[]mProjection =
{
UserDictionary.Words._ID,
UserDictionary.Words.WORD,
UserDictionary.Words.LOCALE
};

另一個契約類是用於連絡人Provider的ContactsContract類。此類的參考文檔中包含範例程式碼片段。它的一個子類,ContactsContract.Intents.Insert,也是一個契約類,它包含了用於intent和intent資料的契約。

引用MIME類型
Contentprovider可以返回標準的MIME類型或自訂的MIME類型字串,或同時返回兩者。

MIME類型具有以下形式

type/subtype

例如,世人皆知的MIME類型text/html具有text類型和html子類型。如果provider從一個URI返回此類型,這表示面向此URI的查詢將返回帶有HTML標記的文本。

自訂的MIME字串,也被叫做"vendor-specific"MIME類型,具有更複雜的類型和子類型值,此類型的值總是這樣

vnd.android.cursor.dir

用於多行,或這樣

vnd.android.cursor.item

用於單行。

而子類型是每個provider都不相同的。Android內建的provider通常具有一個間單的字類型。例如,當連絡人應用為一個電話號碼建立一個新行時,它為新行設定下面的MIME類型:

vnd.android.cursor.item/phone_v2

可以看到子類型的值只是簡單的phone_v2.

其它provider開發人員可能基於provider的authority和表名字建立他們自己的子類型式樣。例如,假設一個provider含有列車時刻表,provider的authority是com.example.trains,並且它包含三個表:線路1,線路2,線路3。在URI的響應中,

content://com.example.trains/Line1

指向線路1表,provider返回對應的MIME類型為:

vnd.android.cursor.dir/vnd.example.line1

而content URI

content://com.example.trains/Line2/5

指向線路2表的第5行,provider返回的對應的MIME類型為:

vnd.android.cursor.item/vnd.example.line2

大多數contentproviders定義了契約類來包含它們所用到的MIME類型。例如,連絡人Provider的契約類ContactsContract.RawContacts,定義了常量CONTENT_ITEM_TYPE,它對應於一行原始的連絡人資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.