Android 11 权限问题
Android 11 Permission Issue
我的flutter代码是
var storageInfo = await PathProviderEx.getStorageInfo();
var root = storageInfo[0]
.rootDir;
var fm = FileManager(root: Directory(root));
await fm.filesTree(
excludedPaths: [
'/storage/emulated/0/Android',
],
extensions: ['pdf']
);
发生错误
E/flutter (16591): FileSystemException: Directory listing failed, path = '/storage/emulated/0/Android/obb' (OS Error: Permission denied, errno = 13)
E/flutter (16591): #0 FileManager.dirsTree (package:flutter_file_manager/src/file_manager.dart:110:7)
E/flutter (16591): #1 FileManager.filesTree (package:flutter_file_manager/src/file_manager.dart:132:34)
我有一个问题要从 Flutter 应用程序 android 11 中的存储中获取文件列表
我已经在 AndroidManifest.xml 文件中添加了这两个权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
正确的解决方案是将 android:requestLegacyExternalStorage="true"
添加到您的 AndroidManifest
文件中,并在 build.gradle
中更改 targetSdkVersion 29
,同时保留 compileSdkVersion 30
。这应该可以正常工作。
我们需要通过 permission_handler 请求 manage_external_storage 许可。
将此权限添加到 AndroidManifest.xml
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
请求权限如下图
await Permission.manageExternalStorage.request();
然后我们可以读取任何文件并写入Android 11.
中的任何位置
我的flutter代码是
var storageInfo = await PathProviderEx.getStorageInfo();
var root = storageInfo[0]
.rootDir;
var fm = FileManager(root: Directory(root));
await fm.filesTree(
excludedPaths: [
'/storage/emulated/0/Android',
],
extensions: ['pdf']
);
发生错误
E/flutter (16591): FileSystemException: Directory listing failed, path = '/storage/emulated/0/Android/obb' (OS Error: Permission denied, errno = 13)
E/flutter (16591): #0 FileManager.dirsTree (package:flutter_file_manager/src/file_manager.dart:110:7)
E/flutter (16591): #1 FileManager.filesTree (package:flutter_file_manager/src/file_manager.dart:132:34)
我有一个问题要从 Flutter 应用程序 android 11 中的存储中获取文件列表
我已经在 AndroidManifest.xml 文件中添加了这两个权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
正确的解决方案是将 android:requestLegacyExternalStorage="true"
添加到您的 AndroidManifest
文件中,并在 build.gradle
中更改 targetSdkVersion 29
,同时保留 compileSdkVersion 30
。这应该可以正常工作。
我们需要通过 permission_handler 请求 manage_external_storage 许可。
将此权限添加到 AndroidManifest.xml
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
请求权限如下图
await Permission.manageExternalStorage.request();
然后我们可以读取任何文件并写入Android 11.
中的任何位置