来项目相机拍照之后照片无法获取到,然后报错
java.io.FileNotFoundException: open failed: EPERM (Operation not permitted)
原因:项目sdk升级,导致文件创建失败
Android10以前图片直接可以保存在sd卡中,从10开始新增了沙盒机制,数据只能保存在app的目录下面。但是Android10做了兼容,
在AndroidManifest.xml中增加android:requestLegacyExternalStorage=“true”就可以在sd下面进行文件操作了。
但是sdk升级到Android11之后该方法失效,文件创建失败 ,然后报错
解决方案:
在app目录下面创建文件
if (Build.VERSION.SDK_INT >29){
file = new File(context.getExternalFilesDir(null).getAbsolutePath() + "/photo.png");
}else {
file = new File(Environment.getExternalStorageDirectory().getPath() + "/photo.png");
}