File.listfiles()调用中未包含的某些目录

时间:2013-12-11 16:39:49

标签: android filesystems

在我正在处理的应用程序中,我有一个文件管理器,它使用File.listFiles()来检索目录中的所有文件。这在Samsung Galaxy S3上完全正常,但在Nexus 7 tablet KitKat 4.4.2上有一些目录丢失。该应用程序具有读取和写入外部存储的权限。

缺少的目录特别是我最近创建的目录。我检查了这些权限,它们与列出的目录相同(771)。其他文件管理应用程序可以列出所有。这是系统没有重新索引目录的问题吗?

是否有替代File.listFiles()可以更好地运作? 显然,管理应用程序的其他文件正在使用不同的方法,因为它们可以正常工作。

我已经尝试了一些我在网上发现的关于强制媒体重新扫描但我尝试崩溃的所有应用程序的建议(似乎是与Android 4.4相关的问题)。

编辑:我似乎找到了原因,这仍然困扰着我。有一个函数getFileExtension()调用返回NULL并导致某些目录没有列出。仅当项目不是目录但以某种方式影响执行流程时才进行调用:

if (ff.isDirectory()) {
   dir.add(new Option(ff.getName(), "Folder", ff.getAbsolutePath()));
} else {
   if (getFileExtension(ff.getName()).matches("WAV|AIFF|AIF|AMB|MP3|OGG|FLAC")) {
       fls.add(new Option(ff.getName(), String.valueOf(ff.length()), ff.getAbsolutePath()));
   }
}

有趣的是,相同的代码在Galaxy S3上运行正常(使用Android 4.3)。

0 个答案:

没有答案