如何解决Flutter在尝试写文件时出现“OS Error: Operation not permitted, errno = 1”错误?

4

我正在尝试在我的Flutter程序中写入一个.txt文件。我正在使用Permission_handler包,并且当我运行代码(使用小米10)时,应用会请求权限来访问媒体和文件,我点击允许,调试控制台显示"I/flutter (15890): PermissionStatus.granted"(我指的是更新AndroidManifest.xml或修改"gradle.properties"等所有部分都已完成)。但是当它要写入文件时,它会抛出这个错误:

E/flutter (15890): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: FileSystemException: Cannot open file, path = '/storage/emulated/0/Download/X.txt' (OS Error: Operation not permitted, errno = 1)

我非常感激您对此的任何想法。

2个回答

0

我认为这是由于Android 11的新更改导致的。因此,您需要添加一个权限 (manageExternalStorage)。

像这样

if (Platform.isAndroid) {

  Map<Permission, PermissionStatus> statuses = await [
  Permission.manageExternalStorage
  ].request();//Permission.manageExternalStorage
}

即使如此,您也需要添加读写权限。


我不再从事那个项目了,所以我无法尝试这个。但无论如何,谢谢你抽出时间。 - afsane

0
Mi 10 运行 Android 10。您需要向 AndroidManifest.xml 中的 <application> 元素添加以下属性:
android:requestLegacyExternalStorage="true"

这将使您选择遗留存储模型。

还要在build.gradle中将targetSdkVersion设置为29,并将compileSdkVersion设置为29或30。


1
感谢@Joy的回答。但是它仍然显示相同的错误。 E / flutter(31011):[ERROR:flutter / lib / ui / ui_dart_state.cc(186)]未处理的异常:FileSystemException:无法打开文件,路径= '/ storage / emulated / 0 / Download / X.txt'(OS错误:操作不允许,errno = 1) - afsane
我的小米10安卓版本不是10,而是11。你有什么建议吗? - afsane
尝试在build.gradle中将targetSdkVersion设置为29,将compileSdkVersion设置为30。 - Joy
@afsane,你有解决办法吗? - Dharmbir Singh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接