从 Android 11 开始,系统对应用访问外部存储的策略进行了修改。应用在访问外部存储时需要使用特定的目录,例如,应用只能访问其私有目录、公共目录或通过系统操作选择的其他目录。对于针对 Android 11 及更高版本的应用,需要进行针对性的调整,以符合这种新的存储策略。
以下是一些示例代码,展示了如何将应用的文件保存到私有目录中:
// 获取应用私有存储目录
val file = File(context.getExternalFilesDir(null), "fileName")
// 将数据写入文件
val outputStream: FileOutputStream = FileOutputStream(file)
outputStream.write(data)
outputStream.close()
如果需要访问应用之外的目录,可以请求用户授权。以下是示例代码:
// 请求用户授权
val intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
val uri: Uri = Uri.fromParts("package", packageName, null)
intent.data = uri
startActivity(intent)
您还可以查看 Android 开发者文档,以获取有关 Android 11 存储策略的更多信息和最佳实践。