Android使用內(nèi)容提供者將數(shù)據(jù)抽象為服務(wù)。
內(nèi)容提供者在應(yīng)用程序之間的共享數(shù)據(jù)方面發(fā)揮著重要作用。
內(nèi)容提供者使數(shù)據(jù)源看起來(lái)像啟用REST的數(shù)據(jù)提供者,例如網(wǎng)站。
要從內(nèi)容提供者檢索數(shù)據(jù)或?qū)?shù)據(jù)保存到內(nèi)容提供者,你將需要使用一組類(lèi)似REST的URI。
例如,如果你要從內(nèi)容提供程序檢索一組書(shū)籍(即書(shū)籍?dāng)?shù)據(jù)庫(kù)的封裝),需要使用如下所示的URI:
content://com.android.book.BookProvider/books
要從圖書(shū)數(shù)據(jù)庫(kù)中檢索特定圖書(shū),你需要使用如下所示的URI:
content://com.android.book.BookProvider/books/101
設(shè)備上的任何應(yīng)用程序都可以使用這些URI訪問(wèn)和操作數(shù)據(jù)。
設(shè)備上的每個(gè)內(nèi)容提供者都像網(wǎng)站一樣注冊(cè)一個(gè)稱(chēng)為authority的字符串。
authority字符串構(gòu)成一組URI的基礎(chǔ),這些內(nèi)容提供者可以提供的。
此authority注冊(cè)在 AndroidManifest.xml
文件中定義。
以下是如何在 AndroidManifest.xml
中注冊(cè)提供者的兩個(gè)示例:
<provider android:name="SomeProvider" android:authorities="com.your-company.SomeProvider" /> <provider android:name="NotePadProvider" android:authorities="com.google.provider.NotePad"/>
authority類(lèi)似于該內(nèi)容提供者的域名。
內(nèi)容提供者,如網(wǎng)站,有一個(gè)作為起始URL的基本域名。
鑒于上述的authority注冊(cè),這些提供程序?qū)⑹褂靡栽摍?quán)限前綴開(kāi)頭的URL:
content://com.your-company.SomeProvider/ content://com.google.provider.NotePad/
Android提供的提供者可能沒(méi)有完全限定的權(quán)限名稱(chēng)。
例如,contacts
而不是 com.google.android.contacts
。
僅當(dāng)你想要在外部或應(yīng)用程序之間共享數(shù)據(jù)時(shí),才需要內(nèi)容提供者抽象化。
對(duì)于內(nèi)部數(shù)據(jù)訪問(wèn),應(yīng)用程序可以使用以下內(nèi)容:
更多建議: