FileOutputStream ("dest_path") генерирует исключение в android 9 (p ie) - PullRequest
0 голосов
/ 23 февраля 2020

Я прочитал так много тем на 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 и ниже. Пожалуйста, поделитесь своими знаниями об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...