背景介绍:
TV项目的系统是Android N,里面有个产品需求:是做一个视频文件管理器,检测到U盘插入之后,读取里面的视频文件,展示出来,并且支持点击播放,就是如下样式(项目实际运行展示的效果)
我们知道,如果要播放一个视频文件,必须要给播放器 设置一个路径或者Uri,一般是Uri uri=Uri.parse(…)或者是 Uri uri=Uri.fromFile(…)等,如果是这样的话,在Android N上及其之后会抛出 FileUriExposedException 异常
这是因为在Android N 之后,Android 执行的StrictMode API 政策对外部应用公开file://Uri,如果包含这个uri的intent离开当前应用会报FileUriExposedException 异常,而如果在应用间共享文件,应该用content://Uri,并授予Uri临时访问权限,这个具体可以查看 官网 点击这里
按照官网讲解步骤,我们要用到FileProvider类,它是ContentProvider的子类,要按照以下几个步骤去做:
【1】、定义一个FileProvider ,并注册。
【2】、指定要访问的文件路径位置。
【3】、生成文件的Uri。
【4】、赋予Uri临时访问权限。
【5】、向访问程序提供Uri。
具体怎么弄,我就不讲了,官网讲的已经非常详细了,这个也不是本篇博客的重点,我重点讲下如何给FileProvider配置 需要访问的文件。
在 res 目录下 新建xml目录,建一个file_paths.xml。
<?