在网上找到一段代码跑在android 10上,加载相册图片失败该怎么解决?
1、首先确认已经给了相应权限
2、跟踪加载图片的代码

Cursor cursor = getApplicationContext().getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection,null, null, MediaStore.Images.Media.DATE_ADDED);

打印日志发现这个写法正确、可以获取6张图片,既然读取图片没有问题,那就继续往下
3、看显示图片的代码

Glide.with(context).load(arrayList.get(position).cover).placeholder(R.drawable.image_placeholder).centerCrop().into(viewHolder.imageView);

原来用的是Glide加载,那为什么不行呢?网络搜索下 Android 10 Glide,找到结果如下
https://github.com/bumptech/glide/issues/3896 核心内容如下

issue:
on Android 10 , Glide failed to load image from local storage.fix for above issue
android:requestLegacyExternalStorage="true"

就是说在application加入android:requestLegacyExternalStorage="true"就可以解决
4、requestLegacyExternalStorage
进一步查询这个requestLegacyExternalStorage的作用,你就会知道更底层一些的知识。
#######################################
再说一个错误

FileNotFoundException: /content:/media/external/images
参考文章
https://blog.csdn.net/dickyqie/article/details/105120866
https://stackoverflow.com/questions/6935497/android-get-gallery-image-uri-path
https://stackoverflow.com/questions/3401579/get-filename-and-path-from-uri-from-mediastore
https://zhuanlan.zhihu.com/p/128558892
简单分析下
高版本采用MediaStore来管理文件、增删改查都可以用这个。说一个常见的应用场景,那就是读取手机相册里面的图片。我们调用相册读取的图片路径是一个uri,类似这样子的

content://media/external/images/media/379

我们需要先转为图片真实的路径才可以读取。图片真实的路径长什么样?

/storage/emulated/0/DCIM/Camera/394210ccb4c70757ee9e74da852f6c65.jpg

那怎么转换呢,这时候就要用到MediaStore帮助我们。简单说,MediaStore就是一个文件数据库,手机上的文件都记录在这个库里。我们看转换代码

public static String getRealPathFromURI(Context context, Uri contentUri) {Cursor cursor = null;try {String[] proj = { MediaStore.Images.Media.DATA };cursor = context.getContentResolver().query(contentUri,  proj, null, null, null);int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);cursor.moveToFirst();return cursor.getString(column_index);}catch (Exception e){e.printStackTrace();return null;}finally {if (cursor != null) {cursor.close();}}}

网上其他资料一般到这里就完了,但是我这么写了,还是取不到。进一步研究发现,MediaStore在获取文件的时候需要用到provider,在application需要添加如下代码

  <providerandroid:name="androidx.core.content.FileProvider"android:authorities="${applicationId}.fileprovider"android:exported="false"android:grantUriPermissions="true"tools:replace="android:authorities"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/file_paths" /></provider>

android10加载图片问题解决思路全程记录 FileNotFoundException: /content:/media/external/images相关推荐

  1. web项目中js加载慢问题解决思路

    web项目中js加载慢问题解决思路 参考文章: (1)web项目中js加载慢问题解决思路 (2)https://www.cnblogs.com/cslj2013/p/8491786.html 备忘一下 ...

  2. 微信小程序中使用wxss加载图片并实现动画

    微信小程序中使用wxss加载图片并实现动画 记录微信小程序中使用wxss加载图片并实现动画的方式,最终实现loading效果. 代码 .weui-loading { margin: 0 5px; wi ...

  3. Android加载图片内存溢出问题解决方法

    这篇文章主要介绍了Android加载图片内存溢出问题解决方法,本文讲解使用BitmapFactory.Options解决内存溢出问题,需要的朋友可以参考下 1. 在Android软件开发过程中,图片处 ...

  4. Glide4.7加载图片RoundedCorners跟CenterCrop冲突问题解决

    Glide加载图片时需要设置CenterCrop跟RoundedCorners时需要用到RequestOptions的transforms方法 单个设置时后面的设置的会覆盖前面设置的 如: new R ...

  5. [置顶] 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅

    转载请注明出处http://blog.csdn.net/xiaanming/article/details/9825113 异步加载图片的例子,网上也比较多,大部分用了HashMap<Strin ...

  6. Android ListView异步加载图片乱序问题,原因分析及解决方案

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/45586553 在Android所有系统自带的控件当中,ListView这个控件算是 ...

  7. ajax静态加载图片,JQuery实现Ajax加载图片的方法

    本文实例讲述了JQuery实现Ajax加载图片的方法.分享给大家供大家参考,具体如下: 最近在学习JQuery,想从原理上模拟一下无刷新的相册浏览. 最先想到的思路是利用缓存,也就是先显示提示消息,然 ...

  8. 游戏UI动态加载图片优化

    说到UI优化,很多人对其并不以为意,UI的制作无非使用UGUI或者NGUI.UI优化主要是针对图集,还有一些依赖项的优化,针对的是内存优化,上面这些都是关于静态UI的优化,这个是作为程序员都要经历的阶 ...

  9. android studio 加载图片,Android Studio 加载网络图片

    Android Studio是基于gradle的一个Android开发软件,在引用网络图片的时候需要连接第三方库,这里介绍 引用glide的方法. 一.在github页面搜索glide,点击第一个 二 ...

最新文章

  1. linux 重新加载驱动程序,在linux中模拟设备驱动程序崩溃。让python重新加载i
  2. 当网络安全遇上大数据分析(9)
  3. 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 修改 7zr 交叉编译脚本 Android.mk | 交叉编译 lib7zr.so 动态库 )
  4. 随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
  5. Python-按照list中dict的某个key进行排序
  6. gsettings-desktop-schemas : 破坏: mutter (< 3.31.4) 但是 3.28.4-0ubuntu18.04.2 正要被安装解决方案
  7. java基础教程哪个好,面试必会
  8. 中国首部智能交通微纪录片正式发布 探讨交通强国高质量发展路径
  9. python list 底层_深入Python列表的内部实现
  10. PaddlePaddle飞桨OCR文本检测——入门安装GPU版(一)
  11. 列表框、下拉列表框或组合框与数据库
  12. Atitit 项目wechat微信截屏生成vcf通讯录384 个 384个人 42个节拍,平均每个8个人 技术点 im图像裁剪, ocr Tesseract Vcf格式 /wechatTel
  13. java后台json集合传前台js
  14. 特征值和特征向量的作用
  15. java 累加函数_请你编写一个方法(函数),功能要求从参数x累加到y,并返回累加后的整数结果。...
  16. File “/etc/oratab“ is not accessible.
  17. 跨平台第三方平台登录和单点登录
  18. 服务器上如何查看日志记录
  19. 【场景】JMeter并发线程组 Concurrency Thread Group 阶梯式加压
  20. 淘宝天猫整店店铺商品API,店铺商品分类接口代码教程

热门文章

  1. 痘痘长在不同位置代表什么?
  2. java中字符串 MD5密码的加密与验证
  3. AUTOSAR技术分析报告
  4. Python菜鸟学习手册14----标准库+代码实例
  5. 笔记工具:幕布 简要使用教程
  6. 移动网维嘉忆网络基础设施介绍手稿笔记
  7. 视频提取音频 - 手机视频在线提取音频提取器
  8. 【flutter】type ‘Null‘ is not a subtype of type ‘bool‘
  9. retry重试常见场景及实现
  10. 「Mac」突然没声音,音量键不起作用——解决办法(大部分情况)