Android利用ContentProvider獲取本地?cái)?shù)據(jù)的方法
上一篇,我們講到ContentProvider的主要功能是,提供共享數(shù)據(jù)給其他應(yīng)用使用。在Android系統(tǒng)內(nèi)部,同樣提供了共享數(shù)據(jù),查看 android.provider 包下,發(fā)現(xiàn)有以下的共享數(shù)據(jù)
- 本地多媒體(圖片、音視頻等)
- 通訊錄聯(lián)系人
- 通話記錄
- 短信記錄
- ...
當(dāng)然,這些數(shù)據(jù)必須通過(guò)用戶(hù)授權(quán)后才可以調(diào)用,所以在調(diào)用前請(qǐng)申請(qǐng)對(duì)應(yīng)的權(quán)限(6.0系統(tǒng)以上)
獲取數(shù)據(jù)
getContentResolver()的查詢(xún)方法
query(@RequiresPermission.Read @NonNull Uri uri,
@Nullable String[] projection, @Nullable String selection,
@Nullable String[] selectionArgs, @Nullable String sortOrder)
其中參數(shù)的含義
uri 目標(biāo)的uri路徑
圖片為 MediaStore.Images.Media.EXTERNAL_CONTENT_URI (外部)以及 MediaStore.Images.Media.INTERNAL_CONTENT_URI (內(nèi)部)
視頻為 MediaStore.Video.Media.EXTERNAL_CONTENT_URI
音頻為 MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
通訊錄 ContactsContract.Contacts.CONTENT_URI
通話記錄 CallLog.Calls.CONTENT_URI
短信記錄 Telephony.Sms.CONTENT_URI
- projection 查詢(xún)結(jié)果需要哪一些屬性,null的時(shí)候返回所有
- selection 查詢(xún)條件
- selectionArgs 對(duì)應(yīng)查詢(xún)條件的參數(shù)
- sortOrder 排列條件
以圖片為例子
如果你不知道有哪些字段,可以通過(guò)<code>MediaStore.Images.ImageColumns</code>查到所有字段,你也可以通過(guò)以下方式獲取所有的字段
String [] columnNames = mCursor.getColumnNames();
正確姿勢(shì)
//圖片類(lèi)型的Uri路徑
final Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
//按照?qǐng)D片修改時(shí)間,篩選出jpeg和png類(lèi)型的圖片
Cursor mCursor =mContext.getContentResolver()
.query(uri,null,MediaStore.Images.ImageColumns.MIME_TYPE + "=? or "+ MediaStore.Images.ImageColumns.MIME_TYPE + "=?",
new String[]{"image/jpeg", "image/png"}, MediaStore.Images.Media.DATE_MODIFIED);
if(mCursor!=null){
while(mCursor.moveToNext()){
//獲取圖片路徑
String path = mCursor.getString(mCursor
.getColumnIndex(MediaStore.Images.ImageColumns.DATA));
//獲取修改日期
long date = mCursor.getLong(mCursor
.getColumnIndex(MediaStore.Images.ImageColumns.DATE_MODIFIED));
//do something
}
}
由于數(shù)據(jù)量可能會(huì)很大,建議將查詢(xún)等操作放到子線程進(jìn)行,避免阻塞主線程
利用ContentProvider,我們既可以獲取本地的圖片,實(shí)現(xiàn)我們自定義的選圖功能,可以獲取通訊錄,實(shí)現(xiàn)自定義的聯(lián)系人界面,也可以獲取短信記錄,完成對(duì)應(yīng)的頁(yè)面功能效果。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android使用ContentProvider初始化SDK庫(kù)方案小結(jié)
- 基于Android FileProvider 屬性配置詳解及FileProvider多節(jié)點(diǎn)問(wèn)題
- Android ContentProvider實(shí)現(xiàn)手機(jī)聯(lián)系人讀取和插入
- Android7.0行為變更之適配File Provider的方法
- Android7.0中關(guān)于ContentProvider組件詳解
- Android 中自定義ContentProvider與ContentObserver的使用簡(jiǎn)單實(shí)例
- Android 中ContentProvider的實(shí)例詳解
- Android控件AppWidgetProvider使用方法詳解
- Android編程之桌面小部件AppWidgetProvider用法示例
- Android實(shí)現(xiàn)花瓣飄落效果的步驟
相關(guān)文章
Android 校驗(yàn)email是否合法實(shí)現(xiàn)代碼
這篇文章主要介紹了Android 校驗(yàn)email是否合法實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-01-01
Android使用Notification在狀態(tài)欄上顯示通知
這篇文章主要為大家詳細(xì)介紹了Android使用Notification在狀態(tài)欄上顯示通知,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
Android開(kāi)發(fā)實(shí)現(xiàn)橫向列表GridView橫向滾動(dòng)的方法【附源碼下載】
這篇文章主要介紹了Android開(kāi)發(fā)實(shí)現(xiàn)橫向列表GridView橫向滾動(dòng)的方法,結(jié)合實(shí)例形式分析了Android橫向列表GridView實(shí)現(xiàn)橫向滾動(dòng)的相關(guān)布局與功能實(shí)現(xiàn)技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下2018-01-01
實(shí)例詳解Android Selector和Shape的用法
shape和selector是Android UI設(shè)計(jì)中經(jīng)常用到的,比如我們要自定義一個(gè)圓角Button,點(diǎn)擊Button有些效果的變化,就要用到shape和selector,通過(guò)本文結(jié)合代碼實(shí)例給大家詳解Android Selector和Shape的用法,感興趣的朋友一起學(xué)習(xí)吧2016-01-01
Android自定義view實(shí)現(xiàn)日歷打卡簽到
這篇文章主要為大家詳細(xì)介紹了Android自定義view實(shí)現(xiàn)日歷打卡簽到,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05
android編程實(shí)現(xiàn)類(lèi)似于支付寶余額快速閃動(dòng)效果的方法
這篇文章主要介紹了android編程實(shí)現(xiàn)類(lèi)似于支付寶余額快速閃動(dòng)效果的方法,涉及Android時(shí)間函數(shù)的相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
詳解Android通過(guò)修改配置文件設(shè)置wifi密碼
這篇文章主要介紹了詳解Android通過(guò)修改配置文件設(shè)置wifi密碼的相關(guān)資料,需要的朋友可以參考下2017-07-07
Android開(kāi)發(fā)之子線程操作UI的幾種方法
這篇文章主要介紹了Android開(kāi)發(fā)之子線程操作UI的幾種方法的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08
Android實(shí)現(xiàn)視頻播放--騰訊瀏覽服務(wù)(TBS)功能
TBS視頻播放器可以支持市面上幾乎所有的視頻格式,包括mp4, flv, avi, 3gp, webm, ts, ogv, m3u8, asf, wmv, rm, rmvb, mov, mkv等18種視頻格式。這篇文章主要介紹了Android實(shí)現(xiàn)視頻播放--騰訊瀏覽服務(wù)(TBS),需要的朋友可以參考下2018-07-07

