如何在android中快速高效地从SD卡中列出具有特定扩展名的所有文件?

如何在android中快速高效地从SD卡中列出具有特定扩展名的所有文件?,android,listview,mediastore,fileutils,Android,Listview,Mediastore,Fileutils,我正在尝试构建一个android应用程序,其中列出了SD卡中包含特定扩展名的所有文件。例如:pdf、mp3、txt等 我尝试过使用androidMediaStoreclass的getContentURI方法 MediaStore.Files.getContentUri(""); 但这只在蜂巢和更高版本上受支持,而我的应用程序也需要支持姜饼 我遇到的另一个方法是apache的FileUtils类,其代码如下所示 File externalContentDirectory=Environment.

我正在尝试构建一个android应用程序,其中列出了SD卡中包含特定扩展名的所有文件。例如:pdf、mp3、txt等

我尝试过使用androidMediaStoreclass的getContentURI方法

MediaStore.Files.getContentUri("");
但这只在蜂巢和更高版本上受支持,而我的应用程序也需要支持姜饼

我遇到的另一个方法是apache的FileUtils类,其代码如下所示

File externalContentDirectory=Environment.getExternalStorageDirectory();
String[] extensions = new String[] {"mp3","pdf","txt"};
Collection<File> files=FileUtils.listFiles(externalContentDirectory, extensions,true);
File externalContentDirectory=Environment.getExternalStorageDirectory();
字符串[]扩展名=新字符串[]{“mp3”、“pdf”、“txt”};
Collection files=FileUtils.listFiles(externalContentDirectory,extensions,true);
问题是,在速度较慢的手机上列出所有文件需要花费太多时间,很多时候应用程序因此崩溃


有没有其他android特有的方法来列出更快、更高效的文件?

还有一个建议,就是您在问题中共享的代码,您可以将其放入
异步任务中,然后通过调用
适配器来更新列表。notifyDataSetChanged()
。这样,您的应用程序就不会被卡住,您的用户可以在加载列表时执行其他任务


请注意:2
异步任务
无法并行运行

请参阅此链接[获取特定格式文件]: