android7.0后文件访问悄悄的改变形式,不能再以file://....的方式访问,而是以共享的方式content://....。
兼容的方式有两种
1、是在Application的onCreate方法里加入以下代码。
if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.N) {
StrictMode.VmPolicy.Builder builder =newStrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
builder.detectFileUriExposure();
}
不过个人觉得这种方式并不是解决问题的长久之计。
2、是谷歌推荐的解决方式。以共享文件的方式
首先在res目录下添加个xm目录并创建文件provider_paths.xml
provider_paths.xml的内容如下:
属性都要内容里有说明。
然后在AndroidManifest.xml注册我们组件,内容如下
接下来我们就可以直接使用的,没时间整理就先写死后缀了
Uriu = FileProvider.getUriForFile(this,getApplicationContext().getPackageName() +".provider",file);
调用相机和系统自带截图功能的时候一定要记得加上
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
否则就自己坑自己吧