Content Provider 與 Broadcast Receiver 一樣都是Android 組件 也為實現IPC的必要東西 作為IPC 機制 Content Provider 允許應用程序通過ContentResolver類訪問,修改或刪除數據來啟用應用程序之間的通信 與共享資料 此外 ContentResolver 類別允許透過標準化的API 讓APP來存取, 修改, 刪除 位於手機裡面的資料
簡圖
訪問Contnet Provider 會先透過 CursorLoader 方法在背景進行查詢 CursorLoader 會與conteResolver 與 Content Provider 交互來拿到資料 執行數據查詢
舉例 User Dictionary Provider 是內建ContentProvider 管理用戶的自定義詞典
其中ContentResolver().query 會在調用 ContentProvider.query()
cursor = getContentResolver().query(
UserDictionary.Words.CONTENT_URI, // The content URI of the words table
projection, // The columns to return for each row
selectionClause, // Selection criteria
selectionArgs, // Selection criteria
sortOrder); // The sort order for the returned rows
方法擴展 ContentProvider類。
public class MyContentProvider extends ContentProvider {
// Implement required CRUD methods and other logic here
}
Content Provider,以及訪問Contet Provider 數據所需的權限 會宣告在AndroidManifest.xml 中
<manifest ...>
<application ...>
<provider
android:name=".MyContentProvider"
android:authorities="com.example.myapp.provider"
android:exported="false" />
</application>
</manifest>
android:authorities:定義 ContentProvider 的 URI 權限。