前言
正文
一疫赎、簡(jiǎn)介
關(guān)于 ContentProvider (內(nèi)容提供者)一般有兩種用法碘菜,一種是根據(jù)現(xiàn)有的內(nèi)容提供者來(lái)讀取和操作對(duì)應(yīng)程序中的數(shù)據(jù)戚揭,另外一種是創(chuàng)建自己的內(nèi)容提供者給我們的程序中的數(shù)據(jù)提供外部的訪問(wèn)接口辛萍。
在一般的開(kāi)發(fā)中恒削,用的比較多的是第一種,即根據(jù)現(xiàn)有的內(nèi)容提供者來(lái)讀取和操作對(duì)應(yīng)程序中的數(shù)據(jù)怀薛,比如說(shuō)刺彩,讀取 Android 系統(tǒng)中自帶的聯(lián)系人、短信枝恋、媒體庫(kù)等數(shù)據(jù)创倔。而要操作這些數(shù)據(jù)需要一個(gè)類:ContentResolver (內(nèi)容解析者)
關(guān)于第二種用法,我們就需要用到 ContentProvider 類焚碌,下邊會(huì)逐漸介紹
二畦攘、ContentResolver 的簡(jiǎn)單用法
2.1 獲取 ContentResolver 的實(shí)例
//需要通過(guò) Context 來(lái)獲取
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)識(shí)符,主要組成部分如下所示:
協(xié)議聲明:content:// 這是固定寫法
authority:用于區(qū)分不同的程序鹃骂,一般為包名: io.github.adsuper.mvpapp
path: 用于區(qū)分同一應(yīng)用程序中的不同表名台盯,如:table1
Id: 用于區(qū)分同一表中的不同數(shù)據(jù),不過(guò)這個(gè)不常用畏线,一般指定到表就行了