String[] projection = {MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA}; String sortOrder = MediaStore.Images.Media._ID + " DESC"; Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null, sortOrder);
时间: 2024-03-04 12:54:04 浏览: 17
这段代码是查询Android系统中存储的图片信息。其中,`MediaStore.Images.Media._ID`表示图片在媒体库中的唯一标识符,`MediaStore.Images.Media.DATA`表示图片在存储设备上的物理路径。`projection`数组是用来指定查询返回的列,`sortOrder`是用来指定查询结果的排序方式。`getContentResolver().query()`方法执行查询操作,其中`MediaStore.Images.Media.EXTERNAL_CONTENT_URI`表示查询外部存储器中的图片。查询结果会以`Cursor`对象的形式返回。
相关问题
Android13 MediaStore.Images.Media 查询手机相册图片没结果 已设置了READ_EXTERNAL_STORAGE权限
如果您已经添加了 `READ_EXTERNAL_STORAGE` 权限,但是查询相册图片没有结果,那就需要检查一下您的手机相册是否有图片,以及这些图片是否被其他应用程序禁止了访问权限。
当然,还有可能是您的查询条件不正确,您可以尝试使用以下代码查询相册图片:
```
String[] projection = {MediaStore.Images.Media._ID, MediaStore.Images.Media.DISPLAY_NAME, MediaStore.Images.Media.DATA};
String selection = MediaStore.Images.Media.MIME_TYPE + "=? or " + MediaStore.Images.Media.MIME_TYPE + "=? or " + MediaStore.Images.Media.MIME_TYPE + "=?";
String[] selectionArgs = new String[]{"image/jpeg", "image/png", "image/gif"};
String sortOrder = MediaStore.Images.Media.DATE_MODIFIED + " desc";
Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, selection, selectionArgs, sortOrder);
if (cursor != null) {
while (cursor.moveToNext()) {
String imagePath = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
// 处理图片路径
}
cursor.close();
}
```
这个查询条件会查询所有的 JPEG、PNG 和 GIF 格式的图片,并按照修改时间降序排列。如果您的相册中包含其他格式的图片,可以根据需要进行修改。
getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, selection, selectionArgs, sortOrder);几个参数分别是什么意思
`getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, selection, selectionArgs, sortOrder)` 方法中的参数含义如下:
- `MediaStore.Images.Media.EXTERNAL_CONTENT_URI`:表示查询的数据类型为外部存储器中的图片。
- `projection`:指定查询返回的列,即需要查询哪些字段。例如,`new String[]{MediaStore.Images.Media._ID, MediaStore.Images.Media.DISPLAY_NAME}` 表示返回图片在 MediaStore 中的唯一标识符 `_ID` 和显示名称 `DISPLAY_NAME`。
- `selection`:指定查询条件,即需要查询哪些行。例如,`MediaStore.Images.Media.DATE_TAKEN > ?` 表示查询拍摄时间晚于指定时间的图片。
- `selectionArgs`:指定查询条件中的参数值。例如,`new String[]{"2019-01-01"}` 表示查询拍摄时间晚于 2019 年 1 月 1 日的图片。
- `sortOrder`:指定查询结果的排序方式。例如,`MediaStore.Images.Media.DATE_TAKEN DESC` 表示按照拍摄时间降序排列查询结果。
综上所述,该方法的作用是查询外部存储器中符合指定条件的图片,并返回指定的列,按照指定的排序方式排列查询结果。