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

Cannot access hidden folder on android version 11 device in flutter

提问人:Junaid Hassan Final 提问时间:12/17/2021 更新时间:3/8/2022 访问量:1240

问:

我正在制作一个显示 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);
flutter dart 目录 android-11 hidden-files

评论


答:

2赞 Junaid Hassan Final 12/19/2021 #1

当我们的“目标 SDK 版本”为 30 (Android 11) 或更高版本时,会出现此问题

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

<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(() {});
    }
  }

评论

0赞 skmak 2/11/2023
Google 可能不允许在 Play 商店中拥有权限的应用。MANAGE_EXTERNAL_STORAGE