坑:Android从相册中选择图片加载到ImageView中显示不出

Posted Henry_626

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了坑:Android从相册中选择图片加载到ImageView中显示不出相关的知识,希望对你有一定的参考价值。

📋本文目录


坑:

在申请了android.permission.WRITE_EXTERNAL_STORAGE权限后,从相册里选择的图片还是一直不能加载到ImageView中,通过对整个代码部分可能有问题的地方都加了log、Toast进行检查,是没问题的,能一路顺畅地运行到最后一步。
(通过调用相机拍照的照片也能正常地显示出来,我就更迷惑了😶)

然后还好我瞅了瞅Logcat,发现在我选择照片之后竟然有一个open failed: EACCES (Permission denied)
!!!我不是已经给了权限了吗😶
在这里插入图片描述
在程序中的是否授权的判断语句中也是通过了的:
在这里插入图片描述
于是我在网上疯狂查,查到各种奇奇怪怪的,几乎都没能解决问题。其中还有大部分的文章是围绕 “onActivityResult()方法中的判断条件把resultCode写成requestCode的问题” 来解决的,我不知说什么好😅
终于,看到了下面的这篇:
在这里插入图片描述
里面解释的是:

安卓Q(10)开始,就采用存储的分区控制,只能通过手动打开权限,才能使用存储权限。
解决方法:
AndroidManifest.xmlapplication标签下新增 android:requestLegacyExternalStorage="true"即可解决

参考链接:https://www.jianshu.com/p/e1f043a263a6


最终解决:

AndroidManifest.xml 文件中不仅需要加上<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ,还需要在application标签下新增 android:requestLegacyExternalStorage="true" ,如下图:
在这里插入图片描述
然后图片就能成功地从相册中加载到ImageView中啦!当然了,如果图片过大的话需要进行压缩再加载到内存中,不然可能会导致程序崩溃。

以上是关于坑:Android从相册中选择图片加载到ImageView中显示不出的主要内容,如果未能解决你的问题,请参考以下文章

Flutter从相册选择图片并显示出来,上传到服务器

Android从相册中获取图片以及路径

Android studio从相册里面选图片无法选中

Android:实现保存assets图片(或res下的图片:R.drawable.image)到手机相册

关于解决 从相册中选择照片后无法剪切图片以及无法加载图片的问题

Android拍照,相册选择图片以及Android6.0权限管理