我制作了如下代码来获取图片:
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);
我在棉花糖中出现此错误,但在Kitkat中没有。我觉得Google Photo App只在ActivityResult中返回这种类型的URI。
版本:当Intent调用Google Photo应用程序进行图像选择时,我发现这是错误的。 Tnx @ Sanket。但是如何解决这个问题。任何代码都可以处理来自Google Photo和bifercate URI的URI以直接获取图片。因为我必须在Glide库函数中传递它以在ImageView中渲染。
答案 0 :(得分:1)
您需要将这2个类FileUtils和LocalStorageProvider复制到项目中,然后使用此方法获取onActiyityResult中的文件
File mPhotoFile = FileUtils.getFile(this, data.getData());
它适用于您使用 文档 目录或 媒体 目录的所有操作系统版本和天气。< / p>
答案 1 :(得分:1)
在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()是你的本地语境。