日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android的contentprovider多媒体,Android利用ContentProvider获取本地数据的方法

發布時間:2023/12/31 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android的contentprovider多媒体,Android利用ContentProvider获取本地数据的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇,我們講到ContentProvider的主要功能是,提供共享數據給其他應用使用。在Android系統內部,同樣提供了共享數據,查看 android.provider 包下,發現有以下的共享數據

本地多媒體(圖片、音視頻等)

通訊錄聯系人

通話記錄

短信記錄

...

當然,這些數據必須通過用戶授權后才可以調用,所以在調用前請申請對應的權限(6.0系統以上)

requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},1000);

獲取數據

getContentResolver()的查詢方法

query(@RequiresPermission.Read @NonNull Uri uri,

@Nullable String[] projection, @Nullable String selection,

@Nullable String[] selectionArgs, @Nullable String sortOrder)

其中參數的含義

uri 目標的uri路徑

圖片為 MediaStore.Images.Media.EXTERNAL_CONTENT_URI (外部)以及 MediaStore.Images.Media.INTERNAL_CONTENT_URI (內部)

視頻為 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 查詢結果需要哪一些屬性,null的時候返回所有

selection 查詢條件

selectionArgs 對應查詢條件的參數

sortOrder 排列條件

以圖片為例子

如果你不知道有哪些字段,可以通過MediaStore.Images.ImageColumns查到所有字段,你也可以通過以下方式獲取所有的字段

String [] columnNames = mCursor.getColumnNames();

正確姿勢

//圖片類型的Uri路徑

final Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

//按照圖片修改時間,篩選出jpeg和png類型的圖片

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

}

}

由于數據量可能會很大,建議將查詢等操作放到子線程進行,避免阻塞主線程

利用ContentProvider,我們既可以獲取本地的圖片,實現我們自定義的選圖功能,可以獲取通訊錄,實現自定義的聯系人界面,也可以獲取短信記錄,完成對應的頁面功能效果。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

總結

以上是生活随笔為你收集整理的android的contentprovider多媒体,Android利用ContentProvider获取本地数据的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。