用于搜索Android存储中的所有音乐文件(或特定扩展程序)的活动

时间:2015-08-08 09:49:23

标签: android file-handling

我正在构建一个Android应用程序,该应用程序以我的自定义.fire扩展名格式写入文件。

我需要一次访问它们并将它们放在ListView中。有人可以帮我通过活动或异步任务管理器获取它们吗?

2 个答案:

答案 0 :(得分:1)

您可以编写异步任务以从最初编写它们的文件夹中获取.fire文件,并将文件名动态添加到列表视图中。

您可以在异步任务中执行以下操作:

String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
    File root = android.os.Environment.getExternalStorageDirectory();
    File dir = new File(root.getAbsolutePath() + "/"+FolderWhichContainsyourFiles);
    File[] listOfFiles = dir.listFiles();
    for (int count = 0; count < listOfFiles.length; count++) {
        File file = listOfFiles[count];
        if (file.isFile() && file.getName().endsWith(".fire")) {                
            String fileName = file.getName();
            //Here you can dynamically add this name into the ListView
        }
    }
}

您需要使用ArrayAdapter并动态地向ArrayAdapter添加元素。这里有一个很好的解释:Dynamically add elements to a listView Android

答案 1 :(得分:0)

如果要以递归方式查找文件:

private static List<File> filesList = new ArrayList<File>();
public static List<File> recursiveList(String filePath) {
    try {
        File[] dir = new File(filePath).listFiles();
        for (File item : dir) {
            if (item.isDirectory()) recursiveList(item.getAbsolutePath());
            else if (item.isFile() && item.getName().endsWith(".fire"))
                filesList.add(item);
        }
        return filesList;
    } catch (Exception e) {
        return null;
    }
}

并检索活动中的文件:

List<File> files = recursiveList("/sdcard/Music/");
for (File file : files)
    adapterFilesList.add("" + file.getName());