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

2018-07-04 11:50 更新

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

ContentProvider 是應(yīng)用程序之間共享數(shù)據(jù)的接口. 使用的時候首先自定義一個類繼承 ContentProvider, 然后覆寫 query、insert、update、delete 等方法. 因為其是四大組件之一因此必須在 AndroidManifest 文件中進行注冊. 把自己的數(shù)據(jù)通過 uri 的形式共享出去

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

URI 介紹

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

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

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

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

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

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


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號