Я очень плохо знаком с Android и Kotlin / Java. Я не понимаю, почему мой File()
метод получает ошибку:
ни одна из следующих функций не может быть вызвана с предоставленными аргументами.
Я думал, что то, что я положил, должно возвращать Uri, полученный из ACTION_GET_CONTENT
, и этого должно быть достаточно для создания объекта File. Я пытаюсь сделать приложение, которое будет загружать текстовый файл и отображать его. Я надеюсь, что это где-то очень простая ошибка:
fun showFileDialog() {
val fileintent = Intent(Intent.ACTION_GET_CONTENT)
fileintent.setType("text/plain")
fileintent.addCategory(Intent.CATEGORY_OPENABLE)
startActivityForResult(fileintent, FILE_SELECT_CODE)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if(requestCode == FILE_SELECT_CODE && resultCode == Activity.RESULT_OK) {
val selectedfile = File(data!!.data)
val readData = FileInputStream(selectedfile).bufferedReader().use { it.readText
textView.text = readData
}
}
}
Я не знаю, работает ли остальная часть опубликованного кода, но эта ошибка не позволит мне собрать его для тестирования. TIA для любой помощи / указателей
ПОСТАНОВИЛИ:
Первый ответ объяснил, почему я получаю ошибку (следовательно, отвечаю на мой вопрос)
После получения справки из второго ответа и комментария ниже (и больше поиска по SO; см. Ссылки ниже) я изменил свои последние 3 строки кода на:
val input: InputStream = getContentResolver().openInputStream(data!!.data)
val inputAsString = input.bufferedReader().use { it.readText() }
textView.setText(inputAsString)
и это работает хорошо. Спасибо!
ССЫЛКА:
Android: получение URI файла из URI контента?
В Kotlin как мне прочитать все содержимое InputStream в строку?