项目场景:
android 开发向服务器上传图片文件,返回异常错误open failed: EACCES (Permission denied)
问题描述
open failed: EACCES (Permission denied)
原因分析:
Android经过版本更迭在针对外置存储支持了独立的沙箱存储空间, 一般通过Context.getExternalFilesDir() Api获取,该空间内的数据为应用独有,并且不需要申请任何权限即可使用。但是当时并没有限制应用读写非沙箱内的数据。但是从Android Q开始,出于数据隐私问题,Android 希望禁止应用程序操作非沙箱内的数据。 但是为了过度,Android提供了requestLegacyExternalStorage机制,来帮助应用使用原来的机制继续读写存储卡。 关于Android 存储机制的说明请参考Android官方文档 存储。
解决方案:
在清单文件的application节点添加属性
android:requestLegacyExternalStorage="true"