无法从Android 11中包含.nomedia文件或隐藏文件夹的文件夹中获取文件

2022-03-13 00:00:00 whatsapp storage android java android-11

我要获取WhatsApp的.Status文件夹中的所有文件。在android10之前,我会完美地获取所有状态文件。但在Android 11上,由于新的限制,当我编写如下代码时:

File(Environment.getExternalStorageDirectory().absolutePath + File.separator + "Android/media/com.whatsapp/WhatsApp/Media/.Statuses").listFiles()

我总是得到0个文件。而我正在成功获取此路径上的其他文件夹文件";Android/media/com.whatsapp/WhatsApp/Media/";。

我现在面临的两个问题:

  1. 如果文件夹隐藏,则在Android 11中,listFiles()对该文件夹返回0。
  2. 如果文件夹未隐藏,但包含一个";.nomedia";文件,则在Android 11中,listFiles()也会对该文件夹返回0。

如何获取Android 11中的所有WhatsApp状态文件?

由于Google策略,我不想对其使用MANAGE_EXTERNAL_STORAGE权限。感谢您


解决方案

在android 11中有访问隐藏目录的方法,其中有两种方法:

  1. <>存储访问框架(SAF),在该框架中,您可以将用户带到特定目录,并向用户请求访问目录文件权限,以及访问其中文件的方式(学习SAF)。

  2. 您可以对该隐藏文件夹使用文件观察器,无论何时从该隐藏目录创建、修改或删除任何文件,您都会获得隐藏文件夹中该特定文件的完整路径。&;一旦您有了完整路径,您就可以访问该文件。

相关文章