前言

在 app 的開發過程中,我們有時會需要存取其他 app 的資料,例如:通訊錄、相片、文件…等,也有可能需要把我們所產生的資料給其他 app 存取,但是這些資料的存取,都必須在我們能控制的前提之下,而不是無限制的開放存取。

ContentProvider 與 ContentResolver 就是這樣一個資料分享與管控的機制。

主要元件

ContentProvider

android.content.ContentProvider

內容供應器

ContentResolver

android.content.ContentResolver

內容查找器,提供類似 SQL 概念的功能,有 insert(),update((),query(),delete()

ContentUris

android.content.ContentUris

內容 URI,由授權名稱 (authority) 及 路徑 (path) 組成,作為存取 ContentProvider 的唯一識別符號,其標準格式如下:

content://com.example.app.provider/todos

其中 com.example.app.provider 就是 authority , todos 則為 path

ContentValues

android.content.ContentValues

用於在 contentResolver 的 insert() 及 update() 時,傳入參數賦值。

合約類別

由於 app 可能會因為版本的變化而導致資料表或欄位的不同,所以直接透過資料表及欄位名稱存取資料可能會發生錯誤,所以會透過一些合約機制來避免此問題,例如:

ContactsContract

android.provider.ContactsContract

android.provider.ContactsContract.CommonDataKinds

MediaStore.Images

android.provider.MediaStore.Images

參考資料

Android developers Guide: Content providers

Last modified: 2022 年 10 月 13 日

Author

Comments

Write a Reply or Comment

Your email address will not be published.