解决 Android N 上 报错:android.os.FileUriExposedException

来源:互联网 发布:欧姆龙plc编程实例 编辑:程序博客网 时间:2024/05/03 01:11

前一段时间在调试项目拍照上传的时候,发现在 Android N 上 报错:android.os.FileUriExposedException

测试手机:小米5 

系统:MIUI8开发版,android 7.0

查资料后得知报错的原因是:Android N对访问文件权限收回,按照Android N的要求,若要在应用间共享文件,您应发送一项 content://URI,并授予 URI 临时访问权限。 
而进行此授权的最简单方式是使用 FileProvider类。

解决办法:

1、在AndroidManifest.xml中添加如下代码

<application
        ...

<!--    authoritiesapp的包名.fileProvider    grantUriPermissions:必须是true,表示授予 URI 临时访问权限    exported:必须是false    resource:中的@xml/file_paths是我们接下来要添加的文件-->
    <provider    android:name="android.support.v4.content.FileProvider"    android:authorities="包名.fileProvider"    android:grantUriPermissions="true"    android:exported="false">    <meta-data        android:name="android.support.FILE_PROVIDER_PATHS"        android:resource="@xml/file_paths" /></provider>

    </application>

2、在res目录下新建一个xml文件夹,并且新建一个file_paths的xml文件(如下图)


file_paths的内容:

<?xml version="1.0" encoding="utf-8"?><paths>    <!--    path:需要临时授权访问的路径(.代表所有路径)    name:就是你给这个访问路径起个名字    -->    <external-path path="Android/data/com.lzy.imagepickerdemo/" name="files_root" />    <external-path path="." name="external_storage_root" /></paths>
3、修改Uri,适配不同的系统
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.N){     Uri photoURI = FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".provider", file); }else {     Uri photoURI = Uri.fromFile(file); }
参考地址:http://stackoverflow.com/questions/38200282/android-os-fileuriexposedexception-file-storage-emulated-0-test-txt-exposed

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 排便排不出来怎么办 大便排不出去怎么办 婴儿三个没大便怎么办 三天不上大便怎么办 婴儿几天没大便怎么办 排便不好肚子大怎么办 三天不拉大便怎么办 几天不拉大便怎么办 七天不大便该怎么办 新生儿嘴巴很干怎么办 一岁宝宝过敏怎么办 母乳喂养宝宝不吃奶瓶怎么办 宝宝吃奶特别急怎么办 宝宝吃奶粉消化不良怎么办 喝羊奶大便干燥怎么办 宝宝换奶粉发烧怎么办 婴儿吃了蛋白怎么办 新生儿吃了蜂蜜怎么办 婴儿吃蜂蜜中毒怎么办 宝宝吃蜂蜜中毒怎么办 宝宝对蛋清过敏怎么办 宝宝吃蛋清过敏怎么办 婴儿吃蛋清过敏怎么办 初生婴儿拉水怎么办 婴儿鸡蛋过敏了怎么办 婴儿鸡蛋白过敏怎么办 母牛产后涨奶怎么办 宝宝吃奶时间长边吃边睡怎么办 宝宝吃海鲜过敏怎么办 小孩吃虾过敏怎么办 三个月婴儿不吃奶粉怎么办 宝宝秋季腹泻发烧怎么办 婴儿肚子有积食怎么办 小孩眼睛有点斜怎么办 孕妇血糖高便秘怎么办 宝宝蛋清过敏了怎么办 婴儿对鸡蛋过敏怎么办 宝宝断奶喝酸奶怎么办 宝宝被异物卡住怎么办 宝宝夜里膝盖痛怎么办 宝宝吃蛋白过敏怎么办