前言
正文
一、簡介
關(guān)于 ContentProvider (內(nèi)容提供者)一般有兩種用法,一種是根據(jù)現(xiàn)有的內(nèi)容提供者來讀取和操作對應(yīng)程序中的數(shù)據(jù),另外一種是創(chuàng)建自己的內(nèi)容提供者給我們的程序中的數(shù)據(jù)提供外部的訪問接口。
在一般的開發(fā)中,用的比較多的是第一種,即根據(jù)現(xiàn)有的內(nèi)容提供者來讀取和操作對應(yīng)程序中的數(shù)據(jù),比如說,讀取 Android 系統(tǒng)中自帶的聯(lián)系人、短信、媒體庫等數(shù)據(jù)。而要操作這些數(shù)據(jù)需要一個(gè)類:ContentResolver (內(nèi)容解析者)
關(guān)于第二種用法,我們就需要用到 ContentProvider 類,下邊會逐漸介紹
二、ContentResolver 的簡單用法
2.1 獲取 ContentResolver 的實(shí)例
//需要通過 Context 來獲取
ContentResolver contentResolver = context.getContentResolver();
2.2 一系列操作數(shù)據(jù)的方法
- 查詢數(shù)據(jù):contentResolver.query();
- 插入數(shù)據(jù):contentResolver.insert();
- 更新數(shù)據(jù):contentResolver.update();
- 刪除數(shù)據(jù):contentResolver.delete();
2.3 與 SQLiteDatabase 的區(qū)別
ContentResolver 中增刪改查的方法都不接受表名參數(shù),而是使用一個(gè) Uri 參數(shù)代替,這個(gè)參數(shù)被稱為內(nèi)容 URI ,它是唯一的標(biāo)識符,主要組成部分如下所示:
協(xié)議聲明:content:// 這是固定寫法
authority:用于區(qū)分不同的程序,一般為包名: io.github.adsuper.mvpapp
path: 用于區(qū)分同一應(yīng)用程序中的不同表名,如:table1
Id: 用于區(qū)分同一表中的不同數(shù)據(jù),不過這個(gè)不常用,一般指定到表就行了