//这是我的画廊 Intent
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent,2);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == 2) {
Bitmap bm=null;
if (data != null) {
try {
bm = MediaStore.Images.Media.getBitmap(getApplicationContext().getContentResolver(), data.getData());
imageView.setImageBitmap(bm);
} catch (IOException e) {
e.printStackTrace();
}
}
Uri tempUri = getImageUri(getApplicationContext(), bm);
File finalFile = new File(getRealPathFromURI(tempUri));
} }
我正在我的 Android 应用程序中实现相机和图库 Intent 。当我通过相机捕获图像时,图像会显示在 imageview 中,但如果我尝试通过图库 Intent 显示相同的相机图像,则图像不会显示。
注意:捕获的图像不通过图库 Intent 显示,但其他文件夹图像显示在 ImageView 中
最佳答案
错误#1:ACTION_PICK
不使用 MIME 类型。可以将 ACTION_GET_CONTENT
与 MIME 类型结合使用,或将 ACTION_PICK
与集合 Uri
结合使用(例如 MediaStore.Images.Media.EXTERNAL_CONTENT_URI
)。
错误#2:您假设 MediaStore
知道如何从该 Uri
获取图像。由于 Uri
可能不是来自 MediaStore
,因此这是一个错误的假设。使用 Glide 或 Picasso 将图像加载到您的 ImageView
中。
错误 #3:您正在主应用程序线程上加载图像。这会在加载图像时卡住您的 UI。使用 Glide 或 Picasso 将图像加载到您的 ImageView
中,因为它们知道如何在后台线程上完成这项工作。
错误 #4:您似乎复制了一些“获取位图的 Uri
”的代码。您不需要这样做。您已有该图像的 Uri
。它是 data.getData()
,您首先使用它来尝试加载图像。
错误#5:您似乎复制了一些旨在获取“Uri
的真实路径”的代码。没有可靠的方法可以做到这一点。如果您想要一个包含图像数据的 File
,请使用 ContentResolver
和 openInputStream()
获取 InputStream
> 在 Uri
标识的内容上,然后使用该 InputStream
将字节复制到您控制的某个文件的 FileOutputStream
中。
关于java - Android 通过图库 Intent 选择的相机图像未显示在 imageview 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57076081/