坑: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.xml 的application
标签下新增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中显示不出的主要内容,如果未能解决你的问题,请参考以下文章
Android:实现保存assets图片(或res下的图片:R.drawable.image)到手机相册