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.

中的任何位置