本文覆盖的问题场景:
- uniapp的文件IO接口报“targetSdkVersion设置>=29后在Android10+系统设备不支持当前路径。请更改为应用运行路径!具体请看…”错误
- uni.uploadFile接口上传图片视频正常,上传pdf,doc等非媒体文件报400,但无明确错误原因。
- Android 10及以上,使用uni或plus读取公共目录文件报错。(或Android 11及以上正常,Android 10报错)
关于外部存储读写
我们知道Android开发中关于存储主要分两大部分:内部存储和外部存储。
内部存储是给每个应用自动授权的一个仅供此应用自身读写的目录,无需申请。
外部存储则包括了:本应用外部存储目录、其他应用外部存储目录、公共目录媒体文件、公共目录非媒体文件四类。
在最初的Android开发中,应用可以随意读取上面的四类文件。
从Android 4.4(API 19)开始,默认授予本应用外部存储目录访问权限,无需申请;但如果需要访问公共目录的媒体文件或非媒体文件,必须申请外部存储的读取权限。(其他应用外部存储目录是申请任何权限也无法访问的)
出于安全考虑,从Android 10开始,对外部存储的读取权限进行了限制,默认只能访问:公共目录媒体文件。
但为了方便过度,在Android 10和Android 11下,如果应用在And