如何使用 MediaStore 获取包含图像的所有文件夹?

How can I get all folders that contain the images using MediaStore?

我正在使用此代码从用户图库获取所有图像:

String[] projection = {MediaStore.Images.Media.DATA};
Cursor cursor = MediaStore.Images.Media.query(requireContext().getContentResolver(), MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, MediaStore.Images.Media.DATE_ADDED + " desc");
while (cursor.moveToNext()) {
    list.add(cursor.getString(0));
}

请问如何使用MediaStore获取包含上述图片的所有文件夹?

我在发布这个问题之前用谷歌搜索以避免重复的问题,但我没有找到我想要的任何东西,我找到了相关的问题,但它是针对 Android 10 及以上的。

谢谢。

我用这种方式找到了所有图片文件夹

Cursor cursor = MediaStore.Images.Media.query(
        requireContext().getContentResolver(),
        MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
        new String[]{MediaStore.Images.Media.BUCKET_DISPLAY_NAME});

while (cursor.moveToNext()) {
    Log.w("G183", cursor.getString(0));
}

您可以按照自己的方式处理所有文件夹并删除重复的文件夹。


但是有一点很奇怪

MediaStore.Images.Media.BUCKET_DISPLAY_NAME 添加到 API 级别 29 但同时,它正在 API 级别低于 29。如何?

我通过这个 answer 找到了解决方案,因为如果您注意到 2014 年发布的答案和 2020 年发布的 android 10,那么我说了他在 2014 年如何使用 MediaStore.Images.Media.BUCKET_DISPLAY_NAME 但是这个2020 年新增!