一. 安卓 10 储存特性
Android 10 所带来的关于存储上的变更遵循了以下三个基本原则
- 更好的从属性: 系统知道哪些文件属于哪些应用,这可以让用户更方便地管理他们的文件。当应用被卸载后,除非用户需要,否则应用之前所创建的文件也不应该保留在设备上;
- 保护应用数据: 当一个应用将它所属的文件写入外部存储时,这些文件是不应该被其他应用所访问的;
- 保护用户数据: 当用户下载了一些文件,比如带有敏感信息的邮件附件,这些文件应该对其他应用不可见
二.强制执行分区储存
在 Android 11 上运行但以 Android 10(API 级别 29)为目标平台的应用仍可请求 requestLegacyExternalStorage 属性。应用可以利用此标记暂时停用与分区存储相关的变更,例如授予对不同目录和不同类型的媒体文件的访问权限。当您将应用更新为以 Android 11 为目标平台后,系统会忽略 requestLegacyExternalStorage 标记。
以下是我保存文件的方法:
//保存文件 private fun saveImageToExternalStorage(bytes: ByteArray) { val root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) .toString() val myDir = File("$root/saved_images") myDir.mkdirs() val generator = Random() var n = 10000 n = generator.nextInt(n) val fname = "个人报告.pdf