在Android 11及以下版本中,开发者可以使用存储权限来读取和写入SD卡上的文件。但在Android 12中,Scoped Storage机制被引入。 就目前而言,在Android 12中Unfortunately,直接访问框架编写的公共存储目录 /storage/emulated/0/,受到扣分限制。 在应用程序中将访问公共存储改为私有存储以满足Android 12 Scoped Storage政策是一个重大的挑战。
以下是将数据从公共SD卡路径移动到内部存储路径的示例代码:
val publicFile = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "public_file.txt")
val internalFile = File(filesDir, "internal_file.txt")
publicFile.copyTo(internalFile, true) // Move public file to internal storage
以下是将数据从内部存储路径移动到公共SD卡路径的示例代码:
val internalFile = File(filesDir, "internal_file.txt")
val publicFile = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "public_file.txt")
internalFile.copyTo(publicFile, true) // Move internal file to public storage
这些示例代码说明了如何使用scoped storage向内部和外部存储路径读取和写入文件。