从 API 29 (Android 10) 开始,引入了Scoped Storage。早些时候,我能够直接创建一个可共享文件并在Flutter中使用它写入:
File f = File("/storage/emulated/0/MyApp/myFile.txt");
await f.writeAsString(contents);
但是现在随着隐私的变化,即使在我授予存储权限之后,在 Android 10 中似乎也无法做到这一点。
根据文件,
将任何共享的非媒体文件移动到 Downloads/ 目录的应用程序专用子目录。
我的问题是:
- 如果可以,我还能在 中创建文件
/storage/emulated/0/MyApp/myFile.txt
吗? - 如果没有,那么我可以
/storage/emulated/0/Download/MyApp/myFile.txt
直接从 Flutter 中创建一个文件而无需平台代码吗? - 如果我需要使用特定于平台的代码,使用文件选择器是 txt 文件的唯一选择吗?
我也不想使用android:requestLegacyExternalStorage="true"
,因为那样我的应用程序将不适用于 Android 11。