如何在尝试写入文件时解决 Flutter 错误:“操作系统错误:不允许操作,errno = 1”?

问题描述

我正在尝试在我的 Flutter 程序中写入 .txt 文件。我正在使用 Permission_handler 包,当我运行代码(使用 mi 10)时,应用程序请求访问媒体和文件的权限,然后我点击允许,调试控制台显示 “我/ 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)

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

解决方法

小米 10 在 Android 10 上运行。您需要将以下属性添加到 <application> 中的 AndroidManifest.xml 元素:

android:requestLegacyExternalStorage="true"

这会让您选择使用旧存储模型。

同时将 targetSdkVersion 设置为 29,并将 compileSdkVersion 设置为 29 或 30 build.gradle