android – 通过Flutter插件在ExternalStorageDirectory访问权限被拒绝

前端之家收集整理的这篇文章主要介绍了android – 通过Flutter插件在ExternalStorageDirectory访问权限被拒绝前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我写了一个插件来通过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();
    }
  }

返回的路径是正确的存储/模拟/ 0.但现在如果我尝试迭代抛出目录我得到一个权限被拒绝.

error.log中

[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);
    }

我的示例/ android / app / src / AndroidManifest.xml包含以下额外的提交:

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

这里有什么问题?

解决方法

您可以使用这两个包中的任何一个来请求设备权限: https://pub.dartlang.org/packages/simple_permissionshttps://pub.dartlang.org/packages/permission.他们有简单的API和全面的例子.

猜你在找的Flutter相关文章