在 Android 中如果想將自己應(yīng)用的數(shù)據(jù)(一般多為數(shù)據(jù)庫(kù)中的數(shù)據(jù))提供給第三發(fā)應(yīng)用, 那么我們只能通過(guò) ContentProvider 來(lái)實(shí)現(xiàn).
ContentProvider 是應(yīng)用程序之間共享數(shù)據(jù)的接口. 使用的時(shí)候首先自定義一個(gè)類繼承 ContentProvider, 然后覆寫 query、insert、update、delete 等方法. 因?yàn)槠涫撬拇蠼M件之一因此必須在 AndroidManifest 文件中進(jìn)行注冊(cè). 把自己的數(shù)據(jù)通過(guò) uri 的形式共享出去
第三方可以通過(guò) ContentResolver 來(lái)訪問(wèn)該 Provider
每一個(gè) ContentProvider 都擁有一個(gè)公共的URI, 只能通過(guò)訪問(wèn)該 URI 來(lái)獲得數(shù)據(jù).
Android所提供的ContentProvider都存放在android.provider包中。 將其分為A,B,C,D 4個(gè)部分:
A:標(biāo)準(zhǔn)前綴, 用來(lái)說(shuō)明一個(gè) Content Provider 控制這些數(shù)據(jù),無(wú)法改變: "content:\/\/"
B:URI 的標(biāo)識(shí),用于唯一標(biāo)識(shí)這個(gè)ContentProvider, 外部調(diào)用者可以根據(jù)這個(gè)標(biāo)識(shí)來(lái)找到它. 它定義了是哪個(gè)Content Provider提供這些數(shù)據(jù). 對(duì)于第三方應(yīng)用程序,為了保證URI標(biāo)識(shí)的唯一性,它必須是一個(gè)完整的、小寫的類名. 這個(gè)標(biāo)識(shí)在 元素的 authorities屬性中說(shuō)明:一般是定義該 ContentProvider 的包.類的名稱
C:路徑(path),通俗的講就是你要操作的數(shù)據(jù)庫(kù)中表的名字, 或者你也可以自己定義, 記得在使用的時(shí)候保持一致就可以了;"content:\/\/com.bing.provider.myprovider\/tablename"
D:如果URI中包含表示需要獲取的記錄的ID;則就返回該id對(duì)應(yīng)的數(shù)據(jù),如果沒(méi)有ID,就表示返回全部; "content:\/\/com.bing.provider.myprovider\/tablename\/#" #表示數(shù)據(jù)id.
更多建議: