国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android利用ContentProvider獲取本地數據的方法

2019-10-22 18:12:34
字體:
來源:轉載
供稿:網友

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

  1. 本地多媒體(圖片、音視頻等)
  2. 通訊錄聯系人
  3. 通話記錄
  4. 短信記錄
  5. ...

當然,這些數據必須通過用戶授權后才可以調用,所以在調用前請申請對應的權限(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

  1. projection 查詢結果需要哪一些屬性,null的時候返回所有
  2. selection 查詢條件
  3. selectionArgs 對應查詢條件的參數
  4. sortOrder 排列條件

以圖片為例子

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

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,我們既可以獲取本地的圖片,實現我們自定義的選圖功能,可以獲取通訊錄,實現自定義的聯系人界面,也可以獲取短信記錄,完成對應的頁面功能效果。

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


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 米易县| 盐津县| 深圳市| 元阳县| 阿图什市| 常德市| 页游| 台山市| 榕江县| 新乐市| 阿克| 东阿县| 漳浦县| 汽车| 洪江市| 珲春市| 哈巴河县| 奉化市| 正安县| 鄂托克旗| 曲周县| 黄浦区| 卓尼县| 衡阳县| 洛隆县| 高平市| 井研县| 唐山市| 太仓市| 尉氏县| 广汉市| 资溪县| 江永县| 邳州市| 和顺县| 昌宁县| 赣州市| 星座| 尉氏县| 从江县| 清水河县|