Я прочитал так много тем на SO и других платформах, но, кажется, ничто не решает проблему. Вот как я это делаю в kotlin,
val dest = getDestFile() // method defined bellow
if(dest != null){
try {
// dest = full_path/main_dir/nested_dir/another_nested_dir/IMG_123456789.jpg
val out = FileOutputStream(dest) **//This line gives crash**
} catch (e: Exception) {
inputStream.close()
e.printStackTrace()
}
}
fun getDestFile() : File?{
var file = File(Environment.getExternalStorageDirectory(), "main_dir/nested_dir")
if (!file.exists()) {
file.mkdir()
file = File(file, "another_nested_dir") //RESULT: full_path/main_dir/nested_dir/another_nested_dir
if (!file.exists()) {
file.mkdir()
file = File(file, "IMG-" + System.currentTimeMillis() + ".jpg") //RESULT: full_path/main_dir/nested_dir/another_nested_dir/IMG-123456789.jpg
if (file.getParentFile() != null) {
if (!file.exists()) {
file.createNewFile()
}
} else {
file.parentFile.mkdirs()
if (!file.exists()) {
file.createNewFile()
}
}
return file
}
}
return null
}
Я упоминал, где находится cra sh, но я не могу понять, почему это происходит. Приложение вылетает с сообщением
Файл не существует
Тот же код отлично работает на android 8.1 и ниже. Пожалуйста, поделитесь своими знаниями об этом.