3

当我从以下两个位置读取时,只读取了部分照片:

File appStorage = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File externalStorage = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);

例如,下载的照片不会被读取。然而,如果我手动打开图库应用程序,我会在其中看到我的所有照片。

那么如何阅读图库中的所有图像?基本上,我在哪里看?

编辑:

我真的认为我的问题很明显,但由于某种原因,人们似乎被困在ACTION_PICK. 我正在寻找我所说的我在上面寻找的东西。如果我想使用ACTION_PICK,我会使用以下代码:

public void dispatchGalleryIntent(View view) {
        Intent gallery = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(gallery, LOAD_IMAGE_REQUEST_CODE);
    }

我不需要我的用户从图库中挑选图像。不,我需要的是应用程序本身加载图库中的所有图像。我真的不知道该怎么说。

笔记:

如果需要更多说明,这里是我用来阅读我在 OP 中提到的文件的代码(即appStorageexternalStorage):

void addFiles(final File parent, Set<File> images) {
    try {
        for (final File file : parent.listFiles()) {
            if (!file.isDirectory()) {
                images.add(file);
            } else {
                addFiles(file, images);
            }
        }
    } catch (Exception e) {
    }
}
4

1 回答 1

1

尝试以下

File file = Environment.getExternalStorageDirectory();

您将需要过滤正确的扩展名,例如jpg, png, etc.

编辑:

你是对的。我的不是一个很好的解决方案,因为您会得到各种奇怪的图像,您甚至不知道设备上存在这些图像。我只是想把人们引向正确的方向,所以也许有更好信息的人可以回答你。

另一方面,在我的特定设备上,如果我将Android子目录省略为/storage/sdcard0/Android/.... 但我不能说这是最终答案,因为我现在不知道其他设备会如何表现。您基本上需要知道画廊应用程序是如何做到的,或者更好的是如何搭载画廊应用程序并获得它所看到的一切。也许通过使用某种我不知道如何使用的光标。

于 2013-05-29T14:13:42.987 回答