Android Намерение ACTION_CREATE_DOCUMENT всегда приводит к URI == null, несмотря на то, что файл создается - PullRequest
1 голос
/ 19 июня 2020

Я пытаюсь записать файл в указанное пользователем место, используя следующее намерение, чтобы получить файл uri

    val saveFile = Intent()
    saveFile.action = Intent.ACTION_CREATE_DOCUMENT
    saveFile.type = "application/pdf"
    saveFile.addCategory(Intent.CATEGORY_OPENABLE)
    saveFile.putExtra(Intent.EXTRA_TITLE, "123.pdf")

    activity.startActivityForResult(saveFile, 123)

, а затем зачитать результат

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (requestCode == 123 && resultCode == RESULT_OK && intent != null) {
        Log.d(TAG, "URI: ${intent.data}")
    }
    else
        super.onActivityResult(requestCode, resultCode, data)
}

, но URI всегда равен нулю, даже если намерение каждый раз создает пустой файл. Доступ к файловой системе предоставляется, так как я без проблем читаю файлы из хранилища. Что мне не хватает?

1 Ответ

1 голос
/ 19 июня 2020

Вы не смотрите на параметр data для onActivityResult(). Вместо этого вы смотрите на Intent, используемый для создания вашей активности. Замените второй фрагмент кода на:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (requestCode == 123 && resultCode == RESULT_OK && data != null) {
        Log.d(TAG, "URI: ${data.data}")
    }
    else
        super.onActivityResult(requestCode, resultCode, data)
}
...