Android 內(nèi)容提供者

2018-02-20 19:39 更新

Android使用內(nèi)容提供者將數(shù)據(jù)抽象為服務(wù)。

內(nèi)容提供者在應(yīng)用程序之間的共享數(shù)據(jù)方面發(fā)揮著重要作用。

內(nèi)容提供者使數(shù)據(jù)源看起來像啟用REST的數(shù)據(jù)提供者,例如網(wǎng)站。

要從內(nèi)容提供者檢索數(shù)據(jù)或?qū)?shù)據(jù)保存到內(nèi)容提供者,你將需要使用一組類似REST的URI。

例子

例如,如果你要從內(nèi)容提供程序檢索一組書籍(即書籍?dāng)?shù)據(jù)庫的封裝),需要使用如下所示的URI:

content://com.android.book.BookProvider/books

要從圖書數(shù)據(jù)庫中檢索特定圖書,你需要使用如下所示的URI:

content://com.android.book.BookProvider/books/101

設(shè)備上的任何應(yīng)用程序都可以使用這些URI訪問和操作數(shù)據(jù)。

內(nèi)容提供者的架構(gòu)

設(shè)備上的每個內(nèi)容提供者都像網(wǎng)站一樣注冊一個稱為authority的字符串。

authority字符串構(gòu)成一組URI的基礎(chǔ),這些內(nèi)容提供者可以提供的。

此authority注冊在 AndroidManifest.xml 文件中定義。

以下是如何在 AndroidManifest.xml 中注冊提供者的兩個示例:

<provider android:name="SomeProvider"
          android:authorities="com.your-company.SomeProvider" />

<provider android:name="NotePadProvider"
          android:authorities="com.google.provider.NotePad"/>

authority類似于該內(nèi)容提供者的域名。

內(nèi)容提供者,如網(wǎng)站,有一個作為起始URL的基本域名。

鑒于上述的authority注冊,這些提供程序?qū)⑹褂靡栽摍?quán)限前綴開頭的URL:

content://com.your-company.SomeProvider/
content://com.google.provider.NotePad/

Android提供的提供者可能沒有完全限定的權(quán)限名稱。

例如,contacts而不是 com.google.android.contacts 。

內(nèi)容提供者與其他

僅當(dāng)你想要在外部或應(yīng)用程序之間共享數(shù)據(jù)時,才需要內(nèi)容提供者抽象化。

對于內(nèi)部數(shù)據(jù)訪問,應(yīng)用程序可以使用以下內(nèi)容:

  • 首選項:你可以持久存儲應(yīng)用程序首選項的一組key/value對
  • 文件:應(yīng)用程序的內(nèi)部文件
  • SQLite:SQLite數(shù)據(jù)庫
  • 網(wǎng)絡(luò):通過Internet的HTTP服務(wù)檢索或存儲數(shù)據(jù)
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號