在 Android 10.0 设备上进行创建 txt 文件时,创建路径 /sdcard/xxx/xx.txt ,遇到创建失败问题,并确定不是权限造成的问题,通过查找资料确定拉问题出现的原因
在Android使用fuse文件系统开始,Android针对外置存储支持了独立的沙箱存储空间, 一般通过Context.getExternalFilesDir() Api获取,该空间内的数据为应用独有,并且不需要申请任何权限即可使用。但是当时并没有限制应用读写非沙箱内的数据。但是从Android Q开始,出于数据隐私问题,Android 希望禁止应用程序操作非沙箱内的数据。 但是为了过度,Android提供了requestLegacyExternalStorage机制,来帮助应用使用原来的机制继续读写存储卡。
如果确定不是Android 读写权限的问题,可以在 manifest 文件中,application 标签下添加 requestLegacyExternalStorage = true,使用原来的机制继续读写存储卡,这样就可以在 非应用目录(/data/com.xxx.xxx)创建文件啦,但是还是建议在应用目录创建应用文件,也就不会创建失败了。