无法在颤动中访问android 11版设备上的隐藏文件夹
Posted
技术标签:
【中文标题】无法在颤动中访问android 11版设备上的隐藏文件夹【英文标题】:Cannot access hidden folder on android version 11 device in flutter 【发布时间】:2022-01-20 09:42:02 【问题描述】:我正在制作一个显示 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);
【问题讨论】:
【参考方案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(() );
【讨论】:
以上是关于无法在颤动中访问android 11版设备上的隐藏文件夹的主要内容,如果未能解决你的问题,请参考以下文章
在启动某些活动之前,小部件无法在 Android 11 上的设备启动时启动服务