Я не могу создавать файлы или каталоги в Android Studio с Kotlin - PullRequest
0 голосов
/ 30 мая 2019

Мне нужно создать текстовый файл в моем приложении для Android, но он не позволит мне. Метод проверки того, что он был создан, возвращает мне фальшивку. Как я мог это сделать?

Я уже назначил права на запись в файл manifest.xml приложения, но у меня это тоже не работает. Я также сделал запрос на разрешения.

Права доступа к manifest.xml, которые я назначил так:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Код для записи файла, я сделал это так:

    fun writeFile() {
        if (ContextCompat.checkSelfPermission(this@GenerateCodeActivity,
                        android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this,
                    arrayOf(android.Manifest.permission.WRITE_EXTERNAL_STORAGE),
                    PackageManager.PERMISSION_GRANTED)
        }

        val sd_main = File(Environment.getExternalStorageDirectory().absolutePath+"/FilesMyApp")
        var success = true
        if (!sd_main.exists()) {
            success = sd_main.mkdir()
        }
        if (success) {
            val sd = File("${this@GenerateCodeActivity.auth.currentUser?.uid}")
            val hola = "HOLA QUE TAL"
            if (!sd.exists()) {
                success = sd.mkdir()
            }
            if (success) {
                // directory exists or already created
                val dest = File(sd, "${this@GenerateCodeActivity.auth.currentUser?.uid}.txt")
                try {
                    // response is the data written to file
                    FileOutputStream(dest).use { it.write(hola.toByteArray()) }
                } catch (e: Exception) {
                    // handle the exception
                }

            } else {
                // directory creation is not successful
            }
        }
    }

Я хочу набрать указанную текстовую строку, но она не позволит мне войти в зону «если (успех)».

1 Ответ

0 голосов
/ 30 мая 2019
val sd = File("${this@GenerateCodeActivity.auth.currentUser?.uid}")

Вы не указали каталог. Использование:

val sd = File(sd_main, "${this@GenerateCodeActivity.auth.currentUser?.uid}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...