android – 通过Flutter插件在ExternalStorageDirectory访问权限
发布时间:2020-12-14 14:51:00 所属栏目:百科 来源:网络整理
导读:我写了一个插件来通过Dart访问 Android上的ExternalStorageDirectory. 这个插件的android特定代码: @Override public void onMethodCall(MethodCall call,Result result) { if (call.method.equals("getUserDataDirectory")) { String path = Environment.g
我写了一个插件来通过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_permissions或
https://pub.dartlang.org/packages/permission.他们有简单的API和全面的例子.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |