当前位置:   article > 正文

java.io.FileNotFoundException android10+打开文件异常_unable to decode stream: java.io.filenotfoundexcep

unable to decode stream: java.io.filenotfoundexception
  1. Unable to decode stream: java.io.FileNotFoundException:
  2. /storage/emulated/0/DCIM/xxx/xxxx.png:
  3. open failed: EACCES (Permission denied)

应用AndroidSDK更新到29之后,以前图片处理报错。

原因:Android10+之后,引入了分区存储的概念,以前可以直接对外部SDK地址处理的方式在Android10+之后被禁用,需要特定的API才能操作。

解决方式有两种:

  解决方式一:.

直接禁用分区存储,在application标签下直接添加android:requestLegacyExternalStorage="true"

但是需要注意一点,在Android11+之后会忽略这个属性,最终还是需要使用第二种方式。

  1. <application
  2. ...
  3. android:requestLegacyExternalStorage="true"
  4. >

 解决方式二:

通过指定的API操作多媒体文件,以图片为例:

  1. @RequiresApi(api = Build.VERSION_CODES.P)
  2. private Bitmap getBitmapP(Intent data) {
  3. try {
  4. ImageDecoder.Source sourceMap = ImageDecoder.createSource(getContentResolver(), data.getData());
  5. return ImageDecoder.decodeBitmap(sourceMap).copy(Bitmap.Config.ARGB_8888, true);
  6. } catch (Exception e) {
  7. e.printStackTrace();
  8. }
  9. return null;
  10. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/892068
推荐阅读
相关标签
  

闽ICP备14008679号