【问题标题】:Android: Retrieve all image directoriesAndroid:检索所有图像目录
【发布时间】:2016-02-24 16:39:18
【问题描述】:

我正在尝试查找 Android 设备上包含图像(内部和外部存储)的所有目录。
基本上,我尝试获取本地图库应用程序中列出的所有目录

例如:

  • 所有图片
  • 下载
  • 我的最爱
  • Whatsapp 图片
    ...

如何做到这一点?我认为它与 MediaStorage.Images.Media 等有关,但那里的文档不是很有帮助,而且很多谷歌搜索也没有帮助。

【问题讨论】:

    标签: android media android-image android-file


    【解决方案1】:

    感谢@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 作为有效的图像文件扩展名

    【讨论】:

    • 是的,你明白我在说什么
    • 我正在获取根文件和所有子文件为空(“”)。
    【解决方案2】:

    您可以使用此代码在Storage中查找图片文件夹-

    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...
    }
    

    【讨论】:

    • 您的代码不仅添加了父目录,还添加了设备上每张图片的所有文件名!但是您的代码仍然对我有很大帮助,因为我认为搜索所有目录并不容易!
    • 我将使用您的代码来制作 100% 适合我的情况的东西并将其发布在此处。我不知道我现在是否应该接受你的回答......
    • You can use this code to find pictures in Storage 似乎不能完全回答您的问题trying to find all directories on an Android device
    • 是的,这就是我不接受它作为答案的原因,因为我正在寻找更多包含图像的所有父目录,所以 .../Whatsapp/, ../Camera /等等
    • 您如何将字符串添加到文件数组中? String temp = file.getPath().substring(0, file.getPath().lastIndexOf('/')); fileList.add(temp);
    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2011-09-26
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多