如何在 Android 中使用 ContentResolver 查询自定义文件夹中的图像/视频? [英] How query images/videos in custom folders using ContentResolver in Android?

查看:23
本文介绍了如何在 Android 中使用 ContentResolver 查询自定义文件夹中的图像/视频?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 Pictures 目录中有一个自定义文件夹,就像这样Pictures/MyFolder.它在 MyFolder 中有图像.以下是仅在 MyFolder 文件夹上使用 ContentResolver 查询图像的方法.

I have a custom folder in the Pictures directory, like thisPictures/MyFolder. It has images in MyFolder. Here is how to query the images using ContentResolver on MyFolder folder only.

我试过了

Cursor mediaCursor = context.getContentResolver().query(
                MediaStore.Files.getContentUri("external"),
                null,
                MediaStore.MediaColumns.RELATIVE_PATH + " like ? ",
                new String[]{"%MyFolder%"},
                null);

但它也包含其他文件.或者是内容解析器的替代品?

But it contains other files also. Or is any alternate to content resolver?

推荐答案

您可以使用以下函数从文件夹中获取图像.

You can use the below function to get the images from the folder.

private void getImageFolderList() {
    String[] projection = new String[] { MediaStore.Images.Media.DATA,
                    MediaStore.Images.Media._ID,
                    MediaStore.Images.Media.BUCKET_DISPLAY_NAME,
                    MediaStore.Images.Media.DATE_TAKEN };
            Uri images = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
            final String orderBy = MediaStore.Images.Media.DATE_TAKEN;
            Cursor cur = getContentResolver().query(images, projection, // Which
                                                                        // columns
                                                                        // to return
                    null, // Which rows to return (all rows)
                    null, // Selection arguments (none)
                    orderBy + " DESC" // Ordering
            );
            ArrayList<String> imagePath;
            if (cur.moveToFirst()) {
                String bucket, date;
                int bucketColumn = cur.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME);
                int dateColumn = cur.getColumnIndex(MediaStore.Images.Media.DATE_TAKEN);
                do {
                    bucket = cur.getString(bucketColumn);
                    date = cur.getString(dateColumn);
                    if (!allFolder.contains(bucket)) {
                        allFolder.add(bucket);
                    }
                    imagePath = listImageByFolder.get(bucket);
                    if (imagePath == null) {
                        imagePath = new ArrayList<String>();
                    }
                    imagePath.add(cur.getString(cur
                            .getColumnIndex(MediaStore.Images.Media.DATA)));
                    listImageByFolder.put(bucket, imagePath);
                } while (cur.moveToNext());
            }
    }

这篇关于如何在 Android 中使用 ContentResolver 查询自定义文件夹中的图像/视频?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆