问题描述
已阅读到Android 11具有范围存储,但是我找不到任何信息,如何在/storage/emulated/0/
中创建和使用文件夹?旧方法仅适用于api 29及以下版本:(
解决方法
从 Android Q 开始,我们可以在应用程序特定存储中创建文件夹。它的路径:
Android->data->包名->files->你的文件夹
使用这个:
File file;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
file = new File (this.getExternalFilesDir(null) + path);
} else {
file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + path);
}
if (!file.exists()) {
file.mkdirs();
}
,
在Android 11上,Android 10中对访问外部存储的限制要少得多。
import cats.data.Writer
import cats.instances.vector._
import cats.instances.list._
import cats.instances.tuple._
import cats.Foldable
import cats.syntax.traverse._
val result1 = for {
i <- Writer(Vector("hello"),Vector(1))
j <- Writer(Vector("bye"),Vector(2))
} yield j
val result2 = for {
x <- Writer(Vector("hi"),Vector(33))
y <- Writer(Vector("ciao"),Vector(55))
} yield y
val l = Vector(result1,result2)
val result3 = l.flatSequence
println(result3.run) // (Vector(hello,bye,hi,ciao),Vector(2,55))
可以再次读取,并且
Environment.getExternalStorageDirectory()
对于Environment.getExternalStoragePublicDirectory(...)
等文件夹是可写的。
对于大多数目录中的文件,使用正确的扩展名对Android操作系统非常挑剔。
,第1步:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
第2步:
Environment.getExternalStorageDirectory().absolutePath + "/your_folder_name"