首页 > 解决方案 > 无法解码流:java.io.FileNotFoundException:/storage/emulated/0/Snapchat/Snapchat-441126967.jpg:打开失败:EACCES(权限被拒绝)

问题描述

每次我尝试在颤振应用程序上选择图像时,我都会不断收到此错误。虽然在应用程序上从我的相机拍摄实时照片效果很好,但是当我尝试访问我的存储时,错误不断出现。

注意:我使用 image_picker 包来选择两个图像并访问相机。

Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/Snapchat/Snapchat-441126967.jpg: open failed: EACCES (Permission denied)

一切都运行良好,突然我开始遇到这个问题。我做了以下事情。

在我的 android/app/src/main/AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我也将 requestLegacyExternalStorage 设置为 true。

在 Pubsec.yaml 中

permission_handler: ^8.1.2
image_picker:

颤振版本

Flutter 2.0.5 • channel stable

选择图像的代码块

 Future<void> _pickImage(ImageSource source) async {
    print(":: Pick Image executed :::");
    try {
      await Permission.storage.request();
      var status = await Permission.storage.status;
      print(":::: The Status of the permission is ::::");
      print(status);
      if (status.isGranted) {
        File selected =
        await ImagePicker.pickImage(source: source, imageQuality: 30);
        final bytes = selected.readAsBytesSync();
        String _img64 = base64Encode(bytes);

        setState(() {
          _imageFile = selected;
          base64 = _img64;
        });
        uploadFile();
      }
    } catch (error) {
      print(error);
    }

  }

如权限包所示,授予了权限,但是当我从设备库中选择图像时,我仍然会在一天结束时收到错误消息。

标签: androidimageflutterstorage

解决方案


所以最终我发现这个问题只存在于 android 10 设备上。前进的方法是将我的 image_picker 包更新到最新版本,目前是 0.8.1+3。

一切都很顺利。


推荐阅读