我如何从 android Q 中的图库中获取图像?
How to i get image from gallery in android Q?
在我的代码中,我使用 MediaStore.Images.Media.DATA 获取图像位置,但在 Android Q 中,它已被弃用,您能否提出一些示例或解决此问题的方法。谢谢
final String[] columns = {MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID,
MediaStore.Images.ImageColumns.ORIENTATION};
final String orderBy = MediaStore.Images.Media.DATE_TAKEN;
Cursor imageCursor = getActivity().getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, null, orderBy + " DESC" );
while (imageCursor.moveToNext()) {
Uri uri = Uri.parse(imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA)));
/* Uri uri = ContentUris.withAppendedId(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
imageCursor.getLong(Integer.parseInt(BaseColumns._ID)));*/
Uri uris = Uri.parse("file://" + uri);
if(!new File(uris.getPath()).exists() || uris.toString().contains(".gif") || uris.toString().contains(".GIF"))
continue;
mediaList.add(new ExternalMediaFileBean(uris,false));
// }
imageCursor.close();
}
替换:
Uri uri = Uri.parse(imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA)));
与:
Uri uri = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageCursor.getLong(imageCursor.getColumnIndex(MediaStore.Images.Media._ID)));
此外,删除该循环中尝试根据文件扩展名检查内容的代码。
在我的代码中,我使用 MediaStore.Images.Media.DATA 获取图像位置,但在 Android Q 中,它已被弃用,您能否提出一些示例或解决此问题的方法。谢谢
final String[] columns = {MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID,
MediaStore.Images.ImageColumns.ORIENTATION};
final String orderBy = MediaStore.Images.Media.DATE_TAKEN;
Cursor imageCursor = getActivity().getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, null, orderBy + " DESC" );
while (imageCursor.moveToNext()) {
Uri uri = Uri.parse(imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA)));
/* Uri uri = ContentUris.withAppendedId(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
imageCursor.getLong(Integer.parseInt(BaseColumns._ID)));*/
Uri uris = Uri.parse("file://" + uri);
if(!new File(uris.getPath()).exists() || uris.toString().contains(".gif") || uris.toString().contains(".GIF"))
continue;
mediaList.add(new ExternalMediaFileBean(uris,false));
// }
imageCursor.close();
}
替换:
Uri uri = Uri.parse(imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA)));
与:
Uri uri = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageCursor.getLong(imageCursor.getColumnIndex(MediaStore.Images.Media._ID)));
此外,删除该循环中尝试根据文件扩展名检查内容的代码。