首页 > 解决方案 > 我们不能使用颤振在 Android 'R' 即 android 11 的外部存储中以编程方式创建文件夹(操作系统错误:不允许操作,errno = 1)

问题描述

我正在从 URL 下载 1 张图片

   await dio.download(url, saveFile.path,
            onReceiveProgress: (value1, value2) {
          setState(() {
            progress = value1 / value2;
            print(progress);
          });
        });

这在 Android 10 中运行良好,但在 Android 11 中无法运行,为什么?

这是我的例外:- FileSystemException:创建失败,路径 = '/storage/emulated/0/4k 唯一壁纸'(操作系统错误:不允许操作,errno = 1)

虽然我在清单中调用了这个代码......

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

<application
    android:preserveLegacyExternalStorage="true"
    android:requestLegacyExternalStorage="true"
</application>

标签: androidflutterandroid-manifestfile-permissions

解决方案


我通过Permission Handler 插件上的GitHub 问题来到这里。它适用于 Android 10,但不适用于您所说的 Android 11。您是否尝试过使用manageExternalStorage您正在使用的插件的权限?在清单中,您应该添加以下内容:

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

当然,您需要request()获得许可。

请阅读管理外部存储的文档,因为 Google 需要批准使用 manageExternalStorage。让我知道这是否解决了您的问题!


推荐阅读