本文章借鉴学习了https://www.jianshu.com/p/bce6a4c779dd?utm_campaign=hugo&utm_medium=reader_share&utm_content=note&utm_source=weixin-friends
Android 7.0之后规定APP之间不能再用File://这种方式来传递一个File,否则将出现此异常FileUriExposedException。但是同时也给出了解决方案,就是通过FileProvider来传递,通过content://模式。因为自己做的项目里面需要用到,并且自己学习了一下如何适配FileProvider,因此记录一下。
项目中需要将自己相机所拍的照片保存以及取出功能,下面是自己使用FileProvider的例子。
记得要加上临时权限:
同时,在权限清单文件中要加入下图代码
authorities属性表示授权者,格式为:[appId].fileprovider;
exported由于源代码设置只能为false;
grantUriPermission是对uri授权权限,必须为true。
并且,需要在.xml文件夹下配置以下文件。
<root-path/>:设备的根目录new File("/");
<files-path/>:代表context.getFilesDir();
<cache-path/>:代表context.getCacheDir();
<external-path/>:代表Environment.getExternalStorageDirectory;
<external-files-path/>:代表context.getExternaFilesDir();
<external-cache-path/>:代表getExternalCacheDirs();
在以上三个部分中,需要注意的是:必须保证图1中的authorities属性和图3中的authorities属性一致,否则报错。