gpt4 book ai didi

android - 通过 Flutter 插件访问 ExternalStorageDirectory 的权限被拒绝

转载 作者:IT老高 更新时间:2023-10-28 12:38:28 27 4
gpt4 key购买 nike

我写了一个插件来通过 Dart 访问 Android 上的 ExternalStorageDirectory。

插件的android特定代码:

@Override
public void onMethodCall(MethodCall call, Result result) {
if (call.method.equals("getUserDataDirectory")) {
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
result.success(path);
} else {
result.notImplemented();
}
}

返回的路径是正确的storage/emulated/0。但是现在如果我尝试迭代抛出目录,我会得到一个 Permission denied。

错误日志

[ERROR:topaz/lib/tonic/logging/dart_error.cc(16)] Unhandled exception:
E/flutter ( 3381): FileSystemException: Directory listing failed, path = '/storage/emulated/0/' (OS Error: Permission denied, errno = 13)
E/flutter ( 3381): #0 _Directory._fillWithDirectoryListing (dart:io-patch/directory_patch.dart:32)
E/flutter ( 3381): #1 _Directory.listSync (directory_impl.dart:214)
E/flutter ( 3381): #2 _MyAppState.initPathRequest (/data/user/0/com.yourcompany.userdatadirectoryexample/cache/exampleIAKNFP/example/lib/main.dart:34:25)

main.dart

  path = await Userdatadirectory.getUserDataDirectory;

var dir = new Directory(path);

List contents = dir.listSync();
for (var fileOrDir in contents) {
print(fileOrDir.path);
}

我的 example/android/app/src/AndroidManifest.xml 包含这些额外的权限:

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

这里有什么问题?

最佳答案

如果您使用的是 Android Q,就会发生这种情况 | 10.

在 list 文件中添加以下内容即可解决。

<application
android:requestLegacyExternalStorage="true"

关于android - 通过 Flutter 插件访问 ExternalStorageDirectory 的权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46698751/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com