我试图在文件系统上创建一个文件,但我仍然得到了这个异常:
private fun getTempFolder(): File {
val directoryFolder =
File(Environment.getExternalStorageDirectory(), "sample-take-image")
directoryFolder.mkdirs()
return directoryFolder
}
private fun getTempFile(): File {
val timeStamp = SimpleDateFormat("yyyyMMdd_HHMMss", Locale.getDefault()).format(Date())
return File(
getTempFolder().absolutePath,
"image".plus(Calendar.getInstance().timeInMillis).plus(timeStamp).plus(".jpg")
)
}
private fun saveImageToFile(bitmap: Bitmap? = null): String? {
return try {
val file = getTempFile()
Timber.e("Path: + : ${file.absolutePath}")
file.createNewFile()
val fOut = FileOutputStream(file)
bitmap?.apply {
this.compress(Bitmap.CompressFormat.JPEG, 100, fOut)
}
fOut.flush()
fOut.close()
file?.absolutePath.getDefault()
} catch (e: Exception) {
e.printStackTrace()
""
}
}尽管我在拍照后得到了链接:
/storage/emulated/0/sample-take-image/image162064003789420210510_160517.jpg:
所以有人能告诉我为什么在这种情况下我不能创建这个文件。我目前在Android 11上
**汇编30
buildToolsVersion "30.0.2"
minSdkVersion 26**发布于 2021-05-10 10:07:44
在Android 11设备上,您不能在外部存储的根目录中创建目录或文件。
但是,您可以在所有已经存在的公共目录中。
File(Environment.getExternalStorageDirectory(), "sample-take-image")例如,以下列方式取代:
File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), "sample-take-image")发布于 2021-05-10 10:08:26
使用getExternalFilesDir()、getExternalCacheDir()或getExternalMediaDirs() (上下文上的方法),而不是Environment.getExternalStorageDirectory(),因为这是不推荐的。
发布于 2022-01-07 09:47:09
String dirPath;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
dirPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).getAbsolutePath() + "/" + getString(R.string.app_name) + "/";
} else {
dirPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + getString(R.string.app_name) + "/";
}https://stackoverflow.com/questions/67468448
复制相似问题