android - Android 11 - 在外部存储上创建应用程序特定目录
问题描述
最近,我正在尝试将我的应用程序从 SDK-29 迁移到 SDK-30。我最关心的一件事是范围存储。
我在官方文档上看到“在 Android 11(API 级别 30)及更高版本上,应用程序无法在外部存储上创建自己的应用程序特定目录”。
所以我尝试在外部存储中创建自己的目录并向其中写入一个新文件。代码如下所示:
// creating new directory under external storage
val appDir = File(applicationContext.getExternalFilesDir(null), "play")
appDir.mkdir()
// writing new file under my own directory
val newFile = File(appDir.absolutePath, "test.jpg")
val outputStream = FileOutputStream(newFile)
val inputStream = resources.openRawResource(R.drawable.ic_launcher_foreground)
val data = byteArrayOf()
inputStream.read(data)
outputStream.write(data)
inputStream.close()
outputStream.close()
我预计这段代码会崩溃,但它可以工作。我在给定的路径找到文件。所以,我有点困惑那张纸条的含义。
谷歌“无法在外部存储上创建自己的应用程序特定目录”是什么意思?
解决方案
他们指的是从外部存储根目录创建任意目录(例如,Environment.getExternalStorageDirectory()
.
getExternalFilesDir()
和类似的方法Context
是很好的解决方案!
推荐阅读
- reactjs - 将 Redux 与 React 一起使用时出错:无效的钩子调用。Hooks 只能在函数组件的主体内部调用
- r - Remove roads from OpenStreeMap map
- lua - 如何在lua中生成串口BREAK条件
- usb - 是否可以实现 DISKCOPY 从 eMMC 卷逐块复制到 USB 卷
- python - python在数据框中每天屏蔽
- javascript - 镜像 Chrome 控制台输入历史
- amazon-web-services - 如何使用 Terraform 从对等 VPC 中的一个 VPC 启用 DNS?
- javascript - 反应嵌套的上下文提供者问题
- firebase - 找不到 firebase-database-19.6.0.aar
- sql-server - 视图上的 SQL Server 行级安全性