open failed: EACCES (Permission denied)解决方法 AndroidQ

前言

前几天上线的项目 这几天在疯狂修改问题
其中一个问题 引人注目 需要记录一下解决过程
一来 加深记忆
二来 帮助有需要的人

问题:open failed: EACCES (Permission denied)

项目中一个用到头像剪切的地方
是打开手机相册 将图片带到剪切板 进行剪切后设置为客户头像

我自己的手机(Android 9.0)在使用的过程中没有问题!
但是上线以后 有客户反馈 他的手机在设置头像的时候打开图片后显示一片灰色空白

当时没有考虑到是版本的问题 以为是兼容出了问题
刚好公司同事有Android10.0的手机打开后就是灰白色

于是,开始排查版本问题 权限是否没有给到位
几番查阅资料后 找到问题 并 成功解决

问题原因

Android Q文件存储机制修改成了沙盒模式
APP只能访问自己目录下的文件和公共媒体文件。
对于AndroidQ以下,还是使用老的文件存储方式。
Android Q仍然使用READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE
作为存储相关运行时权限,但现在即使获取了这些权限,访问外部存储也受到了限制。

AndroidQ 问题解决

在Android 版本 targetSdkVersion 29以后
打开AndroidManifest.xml文件
找到<application 标签 在此标签中加一行代码 就可以了

  android:requestLegacyExternalStorage="true"

config

此行代码意思为:
使用旧的存储策略,不使用androidQ的新策略。但这个不是长久之计,很快将会强制都使用新策略。

其他解决方法:

在Android 版本 targetSdkVersion 29以后

  • 1.需要长期保存并且卸载也不能删除的,使用公有目录
    公有目录:Downloads、Documents、Pictures 、DCIM、Movies、Music、Ringtones等
    地址:/storage/emulated/0/Downloads(Pictures)
    公有目录下的文件不会跟随APP卸载而删除。

  • 2.不需要长期保存的,并且涉及安全问题的,使用私有目录
    APP私有目录
    地址:/storage/emulated/0/Android/data/包名/files

共勉

我要一步一步往上爬
在最高点乘着叶片往前飞
任风吹干流过的泪和汗
我要一步一步往上爬
等待阳光静静看着它的脸
小小的天有大大的梦想
我有属于我的天
任风吹干流过的泪和汗
总有一天我有属于我的天
在这里插入图片描述

  • 24
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吕氏春秋i

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值