Android四大組件之ContentProvider

ContentProvider 介紹

用於跨進程共享數據。它提供了一套完整的方案,使得一個應用程序能夠訪問另外一個程序的數據,進行增刪改查。是Android進行跨進程共享數據的標準方式。 好比,咱們能夠開發本身的程序訪問系統的聯繫人列表、通話記錄、短信列表等,都是使用了 ContentProvider。java

ContentProvider 使用

使用 ContentProvider 獲取系統數據:

若是咱們僅僅是獲取系統的一些數據,直接能夠經過調用 Context 的方法 getContentResolver()來獲取 ContentResolver 對象。而後再調用 ContentResolver 的增刪改查方法來操做數據。android

具體示例:Android獲取手機短信和通話記錄及通信錄數據庫

自定義 ContentProvider :

  • 用一個類繼承 ContentProvider ,子類重寫方法。 此時假設示例場景爲給其餘程序共享一個數據庫。
public class MyContentProvider extends ContentProvider {
    public MyContentProvider() {
    }
    //初始化內容提供者的時候調用,能夠在裏面進行數據庫的建立、升級操做
    //,返回 ture 則表明初始化完成。注意,只有當存在 ContentResolver
    //嘗試訪問咱們程序中的數據時,內容提供者纔會被初始化
    @Override
    public boolean onCreate() {
        return false;
    }
    //刪除數據,可使用URI來肯定刪除哪一張表中的數據,selection 和 selectionArgs 是約束條件。
    @Override
    public int delete(@NonNull Uri uri, String selection, String[] selectionArgs) {
        return 0;
    }

   /插入數據
    @Override
    public Uri insert(@NonNull Uri uri, ContentValues values) {
        return null;
    }
    
    
    //查詢數據
    @Override
    public Cursor query(@NonNull Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
        return null;
    }
    //更新數據
    @Override
    public int update(@NonNull Uri uri, ContentValues values, String selection, String[] selectionArgs) {
        return 0;
    }
    //根據傳入的內容URI來返回相應的 MIME 類型
    @Override
    public String getType(@NonNull Uri uri) {
        return null;
    }

}
複製代碼

不難發現,基本上都是一些增刪改啥方法。app

  • AndroidManifest.xml 中註冊
<!--authorities 用於對不一樣應用進行區分的,爲了規範,通常都是使用包名進行命名, 其餘程序訪問咱們的數據,也是經過這個路徑進行訪問-->
<provider android:name=".contentprovider.MyContentProvider" android:authorities="com.sjc.myapplication.provider " android:enabled="true" android:exported="true" />
複製代碼
  • 其他詳情參考《第一行代碼.郭霖著》第7章節。

參考文獻:

《第一行代碼.郭霖著》ide

相關文章
相關標籤/搜索