當一個應用程序要把自己的數(shù)據(jù)暴露給其他程序時,可以通過ContentProvider來實現(xiàn)乓序。
其他應用可以通過ContenrResolver來操作ContentProvider暴露的數(shù)據(jù)二庵。
如果應用程序A通過ContentProvider暴露自己的數(shù)據(jù)操作接口钳幅,那么不管A 是否啟動秉剑,其他程序都可以通過該接口來操作A的內(nèi)部數(shù)據(jù)蜜氨,常有增械筛、刪、查飒炎、改变姨。
ContentProvider是以Uri的形式對外提供數(shù)據(jù),ContenrResolver是根據(jù)Uri來訪問數(shù)據(jù)厌丑。
** 步驟:**
定義自己的ContentProvider類定欧,該類需要繼承Android系統(tǒng)提供的ContentProvider基類。
-
在Manifest.xml 文件中注冊ContentProvider怒竿,(四大組件的使用都需要在Manifest文件中注冊) 注冊時需要綁定一個URL砍鸠。
- 例如: android:authorities="com.myit.providers.MyProvider"
- 說明:authorities就相當于為該ContentProvider指定URL。 注冊后耕驰,其他應用程序就可以通過該Uri來訪問MyProvider所暴露的數(shù)據(jù)了爷辱。
-
其他程序使用ContentResolver來操作。
- 調(diào)用Activity的ContentResolver獲取ContentResolver對象
- 調(diào)用ContentResolver的insert(),delete(),update()饭弓,query()進行增刪改查双饥。
一般來說,ContentProvider是單例模式弟断,也就是說咏花,當多個應用程序通過ContentResolver來操作ContentProvider提供的數(shù)據(jù)時,ContentResolver調(diào)用的數(shù)據(jù)操作將會委托給同一個ContentResolver阀趴。