iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0

Content Provider 與 Broadcast Receiver 一樣都是Android 組件 也為實現IPC的必要東西 作為IPC 機制 Content Provider 允許應用程序通過ContentResolver類訪問,修改或刪除數據來啟用應用程序之間的通信 與共享資料 此外 ContentResolver 類別允許透過標準化的API 讓APP來存取, 修改, 刪除 位於手機裡面的資料

簡圖
https://ithelp.ithome.com.tw/upload/images/20250923/20149459OvUHj197KV.png

訪問Contnet Provider 會先透過 CursorLoader 方法在背景進行查詢 CursorLoader 會與conteResolver 與 Content Provider 交互來拿到資料 執行數據查詢

https://ithelp.ithome.com.tw/upload/images/20250923/20149459DKe0oBORnA.png

舉例 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 權限。


上一篇
Day 14 Broadcast Receivers
系列文
我是不可能一直學Android 絕對不會15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言