赞
踩
- Unable to decode stream: java.io.FileNotFoundException:
- /storage/emulated/0/DCIM/xxx/xxxx.png:
- open failed: EACCES (Permission denied)
应用AndroidSDK更新到29之后,以前图片处理报错。
原因:Android10+之后,引入了分区存储的概念,以前可以直接对外部SDK地址处理的方式在Android10+之后被禁用,需要特定的API才能操作。
解决方式有两种:
解决方式一:.
直接禁用分区存储,在application标签下直接添加android:requestLegacyExternalStorage="true"
但是需要注意一点,在Android11+之后会忽略这个属性,最终还是需要使用第二种方式。
- <application
- ...
- android:requestLegacyExternalStorage="true"
- >
解决方式二:
通过指定的API操作多媒体文件,以图片为例:
- @RequiresApi(api = Build.VERSION_CODES.P)
- private Bitmap getBitmapP(Intent data) {
- try {
- ImageDecoder.Source sourceMap = ImageDecoder.createSource(getContentResolver(), data.getData());
- return ImageDecoder.decodeBitmap(sourceMap).copy(Bitmap.Config.ARGB_8888, true);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。