Android 內容提供器—建立內容提供器(實現ContentProvider的MIME類型)

來源:互聯網
上載者:User

ContentProvider類有兩個方法能夠返回MIME類型:

getType()

你必須給提供實現的必要的方法之一。

getStreamTypes()

如果你的提供器提供了檔案,那麼就期望實現這個方法。

針對錶的MIME類型

getType()方法返回了由內容資源標識(URI)參數返回的描述資料類型的MIME格式中的一個字串。這個URI是被模式化的而不是一個特定的URI;因此,你應該返回跟這個模式比對的與內容資源標識相關聯的資料類型。

對於普通的如text、HTML、JPEG等資料類型,getType()方法應該返回標準的MIME資料類型。在IANA_MIME_Media_Types網站(http://www.iana.org/assignments/media-types/index.html)上列出了這些標準的有效MIME類型。

對於指向表資料的一行或多行的內容資源標識(URI),getType()方法應該用以下Android的供應商指定的MIME格式返回一個MIME類型:

1.  類型部分:vnd

2.  子類型部分:

如果資源標識(URI)模式是針對單行資料的,使用:android.crusor.item/

如果資源標識(URI)模式是針對多行資料的,使用:android.cursor.dir/

3.  指定提供器部分:vnd.<name><type>

你要提供<name>和<type>這兩部分內容。<name>的值應該是全域唯一的,並且<type>的值應該相對URI模式是唯一的。對於<name>使用你的公司名或你應用程式的Android包名是一個好的選擇,對於<type>使用跟URI關聯的標識表的字串是一個好的選擇。

例如,如果一個提供器的許可權是com.example.app.provider,並且它要暴露的表被命名為table1,那麼對於table1中多行的MIME類型是:

vnd.android.cursor.dir/vnd.com.example.provider.table1

對於table1的單行的MIME類型是:

vnd.android.cursor.item/vnd.com.example.provider.table1

針對檔案的MIME類型

如果你提供器提供了檔案,那麼就要實現getStreamTypes()方法。這個方法返回一個針對檔案的MIME類型字串數組,這個數組包含了你的提供器能夠返回給內容資源標識的檔案的檔案類型。你應該通過MIME類型過濾器參數來過濾你提供的MIME類型,以便只返回那些用戶端想要處理的MIME類型。

例如,一個提供.jpg、.png、.gif圖片格式的提供器,如果一個應用程式調用帶有“image/*”(任意格式的圖片)過濾字串的ContentResolver.getStreamTypes()方法,那麼ContentProvider.getStreamTypes()方法就應該返回以下數組:

{ "image/jpeg", "image/png", "image/gif"}

如果應用程式只對.jpg檔案感興趣,那麼調用調用帶有過濾字串的*\/jpeg的ContentResolver.getStreamTypes()方法,ContentProvider.getStreamTypes()方法就應該以下結果:

{"image/jpeg"}

如果你的提供不提供過濾字串中請求的MIME類型,那麼getStreamTypes()方法應該返回null。

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.