从gallary获取图像时出错



我做了如下代码来获得图像:

private void openFileManager() {
    Intent i = new Intent(Intent.ACTION_PICK);
    i.setType("image/*");
    startActivityForResult(i, REQUEST_CODE_GALLERY);
}

并在onActivityResult方法中获取图像,如下所示:

Uri uri = data.getData();
InputStream is = getContentResolver().openInputStream(uri);
Bitmap b = BitmapFactory.decodeStream(is);
iv1.setImageBitmap(b);

但得到错误为:

08-04 17:44:36.630 20795-20795/com.test E/image path: content://com.google.android.apps.photos.contentprovider/-1/1/content%3A%2F%2Fmedia%2Fexternal%2Ffile%2F10750/ORIGINAL/NONE/1807946268
08-04 17:44:36.630 20795-20795/com.test E/image path: content://com.google.android.apps.photos.contentprovider/-1/1/content%3A%2F%2Fmedia%2Fexternal%2Ffile%2F10750/ORIGINAL/NONE/1807946268
08-04 17:44:36.647 20795-20795/com.test W/System.err: java.io.FileNotFoundException: No such file or directory

它指向线:InputStream is = getContentResolver().openInputStream(uri);

我在棉花糖里有这个错误,但在基特却没有。我觉得谷歌照片应用程序只在ActivityResult中返回这种类型的URI。

版本:当内部意向调用谷歌照片应用程序进行图像选择时,我知道这是一个错误。Tnx@Sanket。但是如何解决这个问题。任何处理谷歌照片URI的代码和直接获取图片的双向URI。因为我必须在Glide Library函数中传递它才能在ImageView中渲染。

在android 5,6 中尝试此代码获取图像

private Bitmap getBitmapFromUri(Uri uri) throws IOException {
        ParcelFileDescriptor parcelFileDescriptor =
                getLocalContext().getContentResolver().openFileDescriptor(uri, "r");
        FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
        Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
        parcelFileDescriptor.close();
        return image;
    }

getLocalContext()是本地上下文。

获取谷歌照片时是个例外。你可以使用这个类来获取它。

您需要将这两个类FileUtils和LocalStorageProvider复制到您的项目中,然后可以使用此方法在onActiyityResult中获取文件

File mPhotoFile = FileUtils.getFile(this, data.getData());

它将适用于所有操作系统版本,无论您使用的是document目录还是media目录。

最新更新