在Android使用fuse文件系统开始,Android针对外置存储支持了独立的沙箱存储空间, 一般通过Context.getExternalFilesDir() Api获取,该空间内的数据为应用独有,并且不需要申请任何权限即可使用。但是当时并没有限制应用读写非沙箱内的数据。但是从Android Q开始,出于数据隐私问题,Android 希望禁止应用程序操作非沙箱内的数据。 但是为了过度,Android提供了requestLegacyExternalStorage机制,来帮助应用使用原来的机制继续读写存储卡。 关于Android 存储机制的说明请参考Android官方文档 存储。 新版本的适配可以参考Android Q分区存储权限变更及适配这篇文章。本文意在说明Android 系统如何实现requestLegacyExternalStorage机制,所以这里简单说明下,在Android Q上,是不希望应用继续访问非沙盒路径的,沙盒路径一般为外置存储下的/storage/emulated/${userid}/Android/${dir}/${package}/, 这里通过包名来划分路径,应用可以不需要权限直接访问沙盒路径下的数据。非沙盒路径为外置存储下的其他路径&
Android 10 存储模型->requestLegacyExternalStorage
于 2020-10-19 22:27:25 首次发布