我正在使用相机2 API开发相机应用程序。我可以将图像保存到图片目录并将其设置为图像视图,直到android版本11,但在android 12上,图像被保存到图片目录,但没有设置为图像视图,我收到如下错误-
E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/Pictures/1649228496340.jpg: open failed: ENOENT (No such file or directory)
我的功能代码-
String mImagePath;
ImageView ivPhoto;
if (!mImagePath.isEmpty()) {
uri = Uri.fromFile(new File(mImagePath));
Bitmap btmap = loadFromUri(uri);
ivPhoto.setImageBitmap(btmap);
}
public Bitmap loadFromUri(Uri photoUri) {
Bitmap image = null;
try {
// check version of Android on device
if (Build.VERSION.SDK_INT > 27) {
// on newer versions of Android, use the new decodeBitmap method
ImageDecoder.Source source = ImageDecoder.createSource(this.getContentResolver(), photoUri);
image = ImageDecoder.decodeBitmap(source);
} else {
// support older versions of Android by using getBitmap
image = MediaStore.Images.Media.getBitmap(this.getContentResolver(), photoUri);
}
} catch (IOException e) {
e.printStackTrace();
}
return image;
}
我还在清单中的应用程序标记中添加了request estLegacyExternalStorage="true",以使其适用于Android 12以下的API。从昨天开始就一直停留在这个问题上,请帮忙。
在Android 12中,您的应用必须拥有< code > MANAGE _ EXTERNAL _ STORAGE 权限,才能使用MediaStore API或直接文件路径访问这些附加文件和目录。
请在此处查看文件: https://developer.android.com/training/data-storage/manage-all-files