Flutter 如何处理;“拒绝许可”;颤振中的例外?

Flutter 如何处理;“拒绝许可”;颤振中的例外?,flutter,dart,Flutter,Dart,我正试图通过我的flatter应用程序获取android设备上所有文件和目录的名称/路径 以下是用于获取所需数据的代码: Directory(_storageInstance.rootDirectory).list(recursive: true).listen((event) { _storageInstance.searchList.add(SearchEntity(path: event.path,type: event.runtimeType.toString() =

我正试图通过我的flatter应用程序获取android设备上所有文件和目录的名称/路径

以下是用于获取所需数据的代码:

Directory(_storageInstance.rootDirectory).list(recursive: true).listen((event) {
          _storageInstance.searchList.add(SearchEntity(path: event.path,type: event.runtimeType.toString() == "_Directory" ? EntityType.DIRECTORY : EntityType.FILE));
        });
现在我面临的问题是,具有API30或更高版本的设备不允许访问某些特定目录,如“Android”目录中的“data”和“obb”目录。 因此,在上面的代码中,每当my Directory().list().listen()流接收到这些目录时,都会引发以下异常:

E/flutter (28808): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: FileSystemException: Directory listing failed, path = '/storage/emulated/0/Android/data' (OS Error: Permission denied, errno = 13)
E/flutter (28808):
E/flutter (28808): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: FileSystemException: Directory listing failed, path = '/storage/emulated/0/Android/obb' (OS Error: Permission denied, errno = 13)
我试着像这样添加try catch:

Directory(_storageInstance.rootDirectory).list(recursive: true).listen((event) {
          try{
            _storageInstance.searchList.add(SearchEntity(path: event.path,type: 
            event.runtimeType.toString() == "_Directory" ? EntityType.DIRECTORY : EntityType.FILE));
          }
          catch(e){
            print("Exception Caught");
          }
});
但它仍然无法处理异常,并抛出与上面相同的异常。 通常是一个简单的试抓工作。。。。。。。也许我在这个场景中正确地使用了它

在这种情况下,如何正确处理异常

提前感谢您的回答:)

更新:

我尝试在Android Manifest.xml中添加权限。但它仍然抛出同样的例外

下面是应用程序的设置选项卡:


mainifest
标记内添加此行:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
如果还不清楚的话。下面是我在
debug
目录下的项目中的
AndroidMainifest.xml
示例

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.do_app">
    <!-- Flutter needs it to communicate with the running application
         to allow setting breakpoints, to provide hot reload, etc.
    -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>


*注意:-进行这些更改后,您必须从头开始运行。

您是否通过添加
androidmainifest.xml
获得了许可?@BiploveLamichhane否您能帮我吗?我尝试了上述步骤。。。。。。。。还重新安装了应用程序并进行了清理…但仍然给出了相同的例外您添加到调试版本和主版本?是的,我在两个清单中添加了所有这些权限:您可以通过进入应用程序中的设置进行检查,并检查我们是否成功添加了权限。我已在我的应用程序中添加了设置的屏幕截图问题。。。。。。请看一看。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.do_app">
    <!-- Flutter needs it to communicate with the running application
         to allow setting breakpoints, to provide hot reload, etc.
    -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>