安卓Q:如何从特定目录获取图片列表

5

Android Q:我需要从特定目录获取图片列表,我将图片保存在该目录中,并在我的应用程序中显示这些图片。

保存图片的代码:

final String relativeLocation = Environment.DIRECTORY_PICTURES + File.separator + "MyMedia" + File.separator + "Photo";
            ContentResolver resolver = context.getContentResolver();
            ContentValues contentValues = new ContentValues();
            contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, name);
            contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/jpg");
            contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, relativeLocation);
            Uri imageUri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
            fos = resolver.openOutputStream(Objects.requireNonNull(imageUri));
            bmp.compress(Bitmap.CompressFormat.JPEG,100, fos);
            Objects.requireNonNull(fos).close();
            Objects.requireNonNull(fos).flush();

获取图像代码:

Uri externalUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
                String[] projection = {
                        MediaStore.Files.FileColumns._ID,
                        MediaStore.Images.Media.DATE_TAKEN,
                        MediaStore.MediaColumns.TITLE,
                        MediaStore.Images.Media.MIME_TYPE,
                        MediaStore.MediaColumns.RELATIVE_PATH
                };
                Cursor cursor = context.getContentResolver().query(externalUri, projection, null, null,  MediaStore.Images.Media.DATE_TAKEN +" DESC");


            int idColumn = cursor.getColumnIndex(MediaStore.MediaColumns._ID);
            int titleColumn = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.TITLE);
            int relativePathColumn = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.RELATIVE_PATH);

            while (cursor.moveToNext()) {
                Uri photoUri = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, cursor.getString(idColumn));

            }

我需要一个直接查询,以获取保存在相对路径("MyMedia/Photo")中的所有图像列表,而无需在游标循环中添加if条件来检查relativePathColumn是否等于"MyMedia/Photo",因为这会导致在用户设备上对所有图像进行循环!我们是否有任何方法可以直接从我的目录中获取图像列表?

1个回答

5
String path = "MyMedia/Photo";           

String selection = MediaStore.Files.FileColumns.RELATIVE_PATH + " like ? " ;

String selectionargs []= new String[]{"%" + path + "%"};  

.query(externalUri, projection, selection, selectionars,  MediaStore.Images.Media.DATE_TAKEN 

谢谢,以下是翻译内容: Uri photoUri = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, cursor.getString(idColumn)); 返回的路径类似于:content:/media/external/images/media/43 我该如何返回真实路径以便显示它? - aboseraj
1
你不需要“真实路径”来显示图像。只需使用你的URI,你的内容方案即可。 - blackapps
1
InputStream is = getContentResolver().openInputStream(uri); Bitmap bitmap = BitmapFactory.decodeStream(is);输入流is= getContentResolver()。openInputStream (uri); 位图bitmap= BitmapFactory.decodeStream(is); - blackapps
使用MediaStore从特定文件夹获取基于显示名称的精确图像的语法是什么? - Karunesh Palekar
可以使用MediaStore.MediaColumns.RELATIVE_PATH,它与问题中使用的路径字符串相同。 - JunaidS

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