提问者:小点点

无法在android 12中将图像设置为imageView


我正在使用相机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。从昨天开始就一直停留在这个问题上,请帮忙。


共1个答案

匿名用户

在Android 12中,您的应用必须拥有< code > MANAGE _ EXTERNAL _ STORAGE 权限,才能使用MediaStore API或直接文件路径访问这些附加文件和目录。

请在此处查看文件: https://developer.android.com/training/data-storage/manage-all-files