內容目錄
前言
在 app 的開發過程中,我們有時會需要存取其他 app 的資料,例如:通訊錄、相片、文件…等,也有可能需要把我們所產生的資料給其他 app 存取,但是這些資料的存取,都必須在我們能控制的前提之下,而不是無限制的開放存取。
ContentProvider 與 ContentResolver 就是這樣一個資料分享與管控的機制。
主要元件
ContentProvider
android.content.ContentProvider
內容供應器
ContentResolver
android.content.ContentResolver
內容查找器,提供類似 SQL 概念的功能,有 insert(),update((),query(),delete()
ContentUris
內容 URI,由授權名稱 (authority) 及 路徑 (path) 組成,作為存取 ContentProvider 的唯一識別符號,其標準格式如下:
content://com.example.app.provider/todos
其中 com.example.app.provider 就是 authority , todos 則為 path
ContentValues
用於在 contentResolver 的 insert() 及 update() 時,傳入參數賦值。
合約類別
由於 app 可能會因為版本的變化而導致資料表或欄位的不同,所以直接透過資料表及欄位名稱存取資料可能會發生錯誤,所以會透過一些合約機制來避免此問題,例如:
ContactsContract
android.provider.ContactsContract
android.provider.ContactsContract.CommonDataKinds
MediaStore.Images
android.provider.MediaStore.Images
Comments