ContentProvider 是如何實(shí)現(xiàn)數(shù)據(jù)共享的

2018-07-04 11:50 更新

在 Android 中如果想將自己應(yīng)用的數(shù)據(jù)(一般多為數(shù)據(jù)庫(kù)中的數(shù)據(jù))提供給第三發(fā)應(yīng)用, 那么我們只能通過 ContentProvider 來實(shí)現(xiàn).

ContentProvider 是應(yīng)用程序之間共享數(shù)據(jù)的接口. 使用的時(shí)候首先自定義一個(gè)類繼承 ContentProvider, 然后覆寫 query、insert、update、delete 等方法. 因?yàn)槠涫撬拇蠼M件之一因此必須在 AndroidManifest 文件中進(jìn)行注冊(cè). 把自己的數(shù)據(jù)通過 uri 的形式共享出去

第三方可以通過 ContentResolver 來訪問該 Provider

URI 介紹

每一個(gè) ContentProvider 都擁有一個(gè)公共的URI, 只能通過訪問該 URI 來獲得數(shù)據(jù).

Android所提供的ContentProvider都存放在android.provider包中。 將其分為A,B,C,D 4個(gè)部分:

A:標(biāo)準(zhǔn)前綴, 用來說明一個(gè) Content Provider 控制這些數(shù)據(jù),無法改變: "content:\/\/"

B:URI 的標(biāo)識(shí),用于唯一標(biāo)識(shí)這個(gè)ContentProvider, 外部調(diào)用者可以根據(jù)這個(gè)標(biāo)識(shí)來找到它. 它定義了是哪個(gè)Content Provider提供這些數(shù)據(jù). 對(duì)于第三方應(yīng)用程序,為了保證URI標(biāo)識(shí)的唯一性,它必須是一個(gè)完整的、小寫的類名. 這個(gè)標(biāo)識(shí)在 元素的 authorities屬性中說明:一般是定義該 ContentProvider 的包.類的名稱

C:路徑(path),通俗的講就是你要操作的數(shù)據(jù)庫(kù)中表的名字, 或者你也可以自己定義, 記得在使用的時(shí)候保持一致就可以了;"content:\/\/com.bing.provider.myprovider\/tablename"

D:如果URI中包含表示需要獲取的記錄的ID;則就返回該id對(duì)應(yīng)的數(shù)據(jù),如果沒有ID,就表示返回全部; "content:\/\/com.bing.provider.myprovider\/tablename\/#" #表示數(shù)據(jù)id.


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)