如何解决Android 11 - 在外部存储上创建特定于应用程序的目录
最近,我正在尝试将我的应用程序从 SDK-29 迁移到 SDK-30。 我最关心的一件事是范围存储。
我在 official document 上看到“在 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
上的类似方法是很好的替代方法!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。