Android 7.0 FileUriExposedException解决办法

Android 7.0为了提高私有文件的安全性进行了系统权限更改。当尝试把file://URI发到应用外会触发FileUriExposedException,官方推荐方法是使用FileProvider。(详情:https://developer.android.com/reference/android/support/v4/content/FileProvider.html

使用方法:
1,在AndroidManifest.xml配置FileProvider
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.xxx.xxx.fileprovider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_path" />
</provider>

这里需要把com.xxx.xxx改成自己应用的包名。
2,在资源文件的xml目录下创建file_path.xml文件
<?xml version="1.0" encoding="utf-8"?>
<paths>
<root-path
name="file_path"
path="."/>
</paths>
3,生成Uri
Uri uri = FileProvider.getUriForFile(context, "com.xxx.xxx.fileprovider", file);
第二个参数authority要和第一步的配置里android:authorities的值保持一致。

demo:https://github.com/lihuzi19/FileDemoApplication

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,860评论 25 709
  • 今天来聊聊Android 7.0 FileUriExposedException异常,以及它的使用方法和使用场景 ...
    joker_fu阅读 2,264评论 0 4
  • Android7.0发布已经有一个多月了,Android7.0在给用户带来一些新的特性的同时,也给开发者带来了新的...
    善良的老农阅读 788评论 0 5
  • Android7.0发布已经有一个多月了,Android7.0在给用户带来一些新的特性的同时,也给开发者带来了新的...
    东经315度阅读 1,383评论 0 14
  • 今天早上5点多就起来了,因为睡不着了,实在不想在床上辗转反侧,就起来看书了,过好自己的每一天!么么哒!
    阑十三阅读 147评论 0 11