java - Android 通过图库 Intent 选择的相机图像未显示在 imageview 中

标签 java android

//这是我的画廊 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,请使用 ContentResolveropenInputStream() 获取 InputStream > 在 Uri 标识的内容上,然后使用该 InputStream 将字节复制到您控制的某个文件的 FileOutputStream 中。

关于java - Android 通过图库 Intent 选择的相机图像未显示在 imageview 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57076081/

相关文章:

java - 当我尝试使用着色器时,OpenGL 向我发送堆栈下溢错误 (Java)

java - 如何在长按按钮时增加+1?

android - 如果我失去了开发人员证书,该如何在Android Marketplace中更新我的应用程序?

java - 线程故障

android - 每次更改 Google 标签管理器标签时,我们是否需要在 Android 端更新容器 json 文件

java - Java中的线程、等待、通知、 sleep

java - 单例线程安全列表的实现

java - TableColumn中的CellValuePropertyFactory无法应用

java - 通用类输入参数类型不匹配

java - 如何将下面的这些代码合并到我当前的现有代码中?