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

Posted

技术标签:

【中文标题】我们不能以编程方式在 Android \'R\' 的外部存储中创建文件夹,即使用颤振的 android 11(操作系统错误:不允许操作,errno = 1)【英文标题】:Can't we make folder programatically in external storage of Android 'R' i.e. android 11 using flutter (OS Error: Operation not permitted, errno = 1)我们不能以编程方式在 Android 'R' 的外部存储中创建文件夹,即使用颤振的 android 11(操作系统错误:不允许操作,errno = 1) 【发布时间】:2021-09-09 10:33:35 【问题描述】:

我正在从 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)

虽然我在 Manifest 中调用了这段代码...

<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>

【问题讨论】:

你没有告诉你想要做什么,也没有代码可以做任何事情。请写一个正常的帖子。 您的代码未显示它尝试创建的文件夹。或者在哪里。请写一个正常的帖子。 您找到解决方案了吗? 【参考方案1】:

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

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

当然你需要request() 的权限。

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

【讨论】:

这个问题是我提出来的。我已经添加了所有权限。

以上是关于我们不能以编程方式在 Android 'R' 的外部存储中创建文件夹,即使用颤振的 android 11(操作系统错误:不允许操作,errno = 1)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中以编程方式设置背景可绘制对象

Android:编辑以编程方式添加的视图

如何在 Android 中以编程方式增加和减少音量

为啥我们不能在以编程方式设置初始视图控制器时以编程方式在视图控制器之间跳转?

Android imagebutton以编程方式更改?

以编程方式将 id 添加到 R.id