Android: 获取所有图片目录

3
我正在尝试查找Android设备上包含图像的所有目录(包括内部和外部存储)。 基本上,我想获取在本机相册应用程序中列出的所有目录。
例如: - 所有图片 - 下载 - 我的收藏夹 - Whatsapp图片 ...
如何实现这一点?我认为这与MediaStorage.Images.Media有关,但文档并没有提供很好的帮助,而且很多谷歌搜索也没有帮助。
2个回答

6

感谢 @BlazingFire 的帮助,虽然他没有完全回答我的问题,但是提供了一些代码供我参考,并且现在我已经得到了想要的结果:

public ArrayList<String> getFile(File dir) {
    File listFile[] = dir.listFiles();
    if (listFile != null && listFile.length > 0) {
        for (File file : listFile) {
            if (file.isDirectory()) {
                getFile(file);
            }
            else {
                if (file.getName().endsWith(".png")
                        || file.getName().endsWith(".jpg")
                        || file.getName().endsWith(".jpeg")
                        || file.getName().endsWith(".gif")
                        || file.getName().endsWith(".bmp")
                        || file.getName().endsWith(".webp"))
                {
                    String temp = file.getPath().substring(0, file.getPath().lastIndexOf('/'));
                    if (!fileList.contains(temp))
                        fileList.add(temp);
                }
            }
        }
    }
    return fileList;
}

它只会添加图像的父目录,而且仅在这些目录尚未被添加时才添加。我还将.bmp和.webp作为有效的图像文件扩展名包含在内。


1
是的,你明白我在说什么 - undefined
我正在获取根文件和所有子文件为空("")的情况。 - undefined

5
您可以使用此代码在存储中查找图片文件夹 -
private ArrayList<File> fileList = new ArrayList<File>();    

...

public ArrayList<File> getfile(File dir) {
    File listFile[] = dir.listFiles();
    if (listFile != null && listFile.length > 0) {
    for (int i = 0; i < listFile.length; i++) {
        if (listFile[i].getName().endsWith(".png")
                || listFile[i].getName().endsWith(".jpg")
                || listFile[i].getName().endsWith(".jpeg")
                || listFile[i].getName().endsWith(".gif"))
            {
                String temp = file.getPath().substring(0, file.getPath().lastIndexOf('/'));
                fileList.add(temp);
            }
        }
    }
    return fileList;
}

然后您可以这样调用 ArrayList -

File root = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
getFile(root);
for (int i = 0; i < fileList.size(); i++) {
    String stringFile = fileList.get(i).getName();
    Do whatever you want to do with each filename here...
}

1
你的代码不仅添加了父目录,还包括设备上每张图片的所有文件名!但是你的代码确实帮了我很多,因为我没有想到在所有目录中搜索是如此简单! - undefined
我会使用你的代码来制作一个完全适合我的情况的东西,并在这里发布。我不知道现在是否应该接受你的答案... - undefined
是的,这就是为什么我不会接受它作为答案的原因,因为我所寻找的是包含图像的所有父目录,比如.../Whatsapp/,../Camera/等等。 - undefined
@BastiSkaldendudler 我现在无法访问我的电脑,所以我会稍后更新答案...你只需要从字符串的其余部分中删除 image 字符串,就可以得到文件夹的 DIR。 - undefined
1
你是如何将字符串添加到文件数组中的呢?String temp = file.getPath().substring(0, file.getPath().lastIndexOf('/'));fileList.add(temp); - undefined
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接