无法访问 android 版本 11 设备上的隐藏文件夹

Cannot access hidden folder on android version 11 device in flutter

我正在制作一个显示 WhatsApp 状态的应用程序。 WhatsApp 状态存储在 WhatsApp 文件夹中名为“.statuses”的隐藏文件中。但是当我尝试从 .statuses 文件夹中获取子目录和文件列表时,我得到一个空字符串。 此问题仅发生在 android 版本 11 设备上。对于未隐藏的文件夹和 android 版本低于 11 的设备,该代码运行良好。 我的代码附在下面:

final Directory _photoDir =
    Directory(
        '/storage/emulated/0/Android/media/com.whatsapp/WhatsApp/Media/.Statuses');

var imageList = _photoDir
          .listSync()
          .map((item) => item.path)
          .where((item) => item.endsWith(".jpg"))
          .toList(growable: false);

print(imageList);

当我们的“目标 SDK 版本”为 30(Android11)或更高

时,就会出现此问题

我们必须在“android 清单”文件中包含此权限:

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

如果你像我一样使用“permission_handler”包你可以这样显示权限提示:

 void requestStoragePermission() async {
    Map<Permission, PermissionStatus> result = await [
      Permission.storage,
      Permission.manageExternalStorage,
    ].request();

    //if permission is granted only then show home screen else permission error screen is already shown
    if (result[Permission.storage] == PermissionStatus.granted &&
        result[Permission.manageExternalStorage] == PermissionStatus.granted) {
      setState(() {});
    }
  }