如何从Android Q中的图库中获取图像?

时间:2019-11-22 06:46:41

标签: image-gallery android-10.0

在我的代码中,我使用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();
            }

1 个答案:

答案 0 :(得分:1)

替换:

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)));

此外,摆脱该循环中试图根据文件扩展名检查代码的代码。