1.MediaProvider存储手机中的媒体文件,用 SQLite 数据库存储图片、视频、音频等多媒体文件的信息,供视频播放器、音乐播放器、图库使用。以 root 权限进入 adb shell,使用 sqlite3 打开位于手机上 /data/data/com.android.providers.media/databases 上的一个数据库。以 external 开头的数据库存储的是 SD 卡媒体信息,一张卡对应一个,所以如果手机使用过多张卡会有多个数据库。以 internal 开头的数据库存储手机内部存储器的媒体信息。因为一般用户无法访问手机内部存储器,而且这两个数据库结构是大体上是相同的,所以只需要关注 external 数据库即可。

2.配置读写权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />

代码声明:

private ContentProviderClient mProvider; private static final String[] FILES_PRESCAN_PROJECTION = new String[]{
            MediaStore.Files.FileColumns._ID, // 0            MediaStore.Files.FileColumns.DATA, // 1

    };    private ContentValues toValues(int i) {    ContentValues map = new ContentValues();

            map.put(MediaStore.MediaColumns.DATA,"/zcx"+i);            map.put(MediaStore.MediaColumns.TITLE,"zcxzcx");

            map.put(MediaStore.MediaColumns.SIZE,5);            map.put(MediaStore.MediaColumns.MIME_TYPE,"tiantian");            return map;    }

main():

mProvider = getContentResolver()        .acquireContentProviderClient(MediaStore.AUTHORITY);Uri mFilesUri = MediaStore.Files.getContentUri("external");Cursor c = null; String where = MediaStore.Files.FileColumns._ID + ">?";//+ " AND " + MediaStore.Files.FileColumns.DATA + "=?";Uri limitUri = mFilesUri.buildUpon().appendQueryParameter("limit", "1000").build();String[] selectionArgs = null;selectionArgs = new String[] { "" };long lastId=160000;//, "/zcx3"ContentValues values = new ContentValues();values = toValues(0);ContentValues values2 = new ContentValues();values2 = toValues(1);List<ContentValues> list = new ArrayList<ContentValues>();

int cou = 100;while ((cou--)!=0){    list.add(toValues(cou));}try {   ContentValues[] valuesArray = new ContentValues[list.size()];    valuesArray = list.toArray(valuesArray);    //mProvider.insert(mFilesUri,values);    //mProvider.insert(mFilesUri,values2);    st = System.currentTimeMillis();    mProvider.bulkInsert(mFilesUri,valuesArray);    end = System.currentTimeMillis();} catch (RemoteException e) {    Log.d("zcxdatabase2","RemoteException = ");    e.printStackTrace();}while (true) {   selectionArgs[0] = "" + lastId;    if (c != null) {        c.close();        c = null;    }    try {        c = mProvider.query(limitUri, FILES_PRESCAN_PROJECTION,                where, selectionArgs, MediaStore.Files.FileColumns._ID, null);    } catch (RemoteException e) {        e.printStackTrace();    }    if (c == null) {        break;    }

    int num = c.getCount();

    if (num == 0) {        break;    }    while (c.moveToNext()) {        long rowId = c.getLong(0);        String path = c.getString(1);        Log.d("zcxdatabase","rowId = "+rowId+" path = "+path);        lastId = rowId;

        // Only consider entries with absolute path names.        // This allows storing URIs in the database without the        // media scanner removing them.

    }     //break;}
 

参考文档:https://www.cnblogs.com/linlf03/p/3477077.html

转载于:https://www.cnblogs.com/zCoderJoy/p/8975846.html

android-读取MediaProvider相关推荐

  1. Android MediaScanner MediaProvider流程以及性能优化,音视频扫描

    Android MediaScanner MediaProvider流程以及性能优化,音视频扫描 快速扫描 一.源码解析 github链接 MediaScanner时序图 MediaSacannerR ...

  2. android 读取json数据(遍历JSONObject和JSONArray)

    android 读取json数据(遍历JSONObject和JSONArray) public String getJson(){ String jsonString = "{\" ...

  3. android mp3 lrc歌词文件utf-8歌词显示为乱码,Android读取本地json文件的方法(解决显示乱码问题)...

    本文实例讲述了Android读取本地json文件的方法.分享给大家供大家参考,具体如下: 1.读取本地JSON ,但是显示汉字乱码 public static String readLocalJson ...

  4. android 读取 网页,Android读取网页内容

    1.修改AndroidManifest.xml文件 2.网页读取类 package com.neohope.android.web; import java.io.ByteArrayOutputStr ...

  5. android读取assets中的html文件,android读取assets文件.htm

    android读取assets文件 android读取assets文件 style='FONT-SIZE: 14px; FONT-FAMILY: verdana, "ms song" ...

  6. android 读取excel数据并保存为xml文件

    今天,简单讲讲android如何  读取excel数据并保存为xml文件. 最近,我这边需要把客户翻译的Excel字符资源作为xml字符资源,当时自己是一个一个的复制,发现效率太低.后来,在网上搜 ...

  7. android 读取assets文件夹下的文件资源

    今天,简单讲讲如何读取assets文件夹下的文件. Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.Java里面自动生成该资源文件的ID ...

  8. android 读取manifest的数据

    今天,是实在不知道该写点什么,但是还是想保持写博客的习惯,所以在网上找了找资料,于是写了这篇博客.内容很简单,大家如果有兴趣,可以自己在网上搜索相关的资料. 在AndroidManifest.xml清 ...

  9. android外置sd大小,android 读取外置和内置存储卡路径和大小

    [实例简介] android 读取外置和内置存储卡路径和大小,亲测好使,项目中以运用 [实例截图] [核心代码] a81fbea6-cb7a-4c96-be21-d52578f6de0a └── SD ...

  10. android 读取txt转为utf-8乱码,彻底解决android读取txt乱码终极方案

    解决android读取txt乱码 一,工具类FileUtil /** * 获取文件内容 * * @param filePath * @return */ public static String ge ...

最新文章

  1. 实验六 快速生成树配置
  2. keil for 51 汉字显示问题
  3. Python实现图片压缩
  4. 作为一名SAP从业人员,需要专门学习数学么
  5. dz论坛发html乱码,发帖时出现乱码 - Discuz!-安装使用 - Discuz! 官方站 - Powered by Discuz!...
  6. TCP/IP四层模型与OSI七层模型
  7. 能根治乱象了?豆瓣私密小组将全部停用
  8. Activity简介
  9. 卡卡通小熊win7桌面主题+非主流win7主题下载
  10. Teststand自定义测试报告
  11. 09年最好看的电影大全_09年最经典的电影大全
  12. 百度运维部农场,绿色畅想
  13. Machine Learning-数学基础2
  14. 洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树(二分法)
  15. 浏览器无法访问某个网站,其他网站都正常
  16. 兔老大的系统设计(一)健康度系统
  17. EDK2之debug
  18. 人员定位系统如何构筑化工企业安全生产防线
  19. python3 字体颜色_python3使用xlwt时写入文档字体颜色和边框样式
  20. Android ViewGroup的draw和onDraw的调用时机

热门文章

  1. Tiled 地图编辑器之 tile坐标转换
  2. Java函数式编程学习——Optional
  3. LineRenderer——画线功能
  4. aigo MP5 视频输出使用方法
  5. python多线程:定时器
  6. Java各类技能知识点学习链接大全:四、数据库Sql,Mysql相关
  7. 养老保险每年交300元交十五年后,六十岁每月能领多少钱?
  8. 计算机应用软件的主要功能,计算机管理信息应用软件系统主要有哪些方面的功能要求?...
  9. 使用AudioRecord实现暂停录音功能
  10. jmeter监控报错 k.a.j.p.PerfMonCollector: Can‘t connect TCP transport for host: /xxx:xxx:xx:xx:4444