Сейчас я пытаюсь сохранить текстовый файл внутри фрагмента, но не могу заставить его работать:
Вот метод, вызываемый, когда пользователь нажимает кнопку сохранения
private fun saveText(){
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
type = "*/*"
putExtra(Intent.EXTRA_TITLE, "text.txt")
}
startActivityForResult(intent, 1)
}
Вот метод onActivityResult:
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
if (requestCode == 1 && resultCode == Activity.RESULT_OK) {
try {
val path = resultData?.data?.path
Log.wtf("Path", filePath)
val writer: Writer = BufferedWriter(FileWriter(path))
writer.write("Example Text")
writer.close()
} catch (e: Exception){
e.printStackTrace()
}
}
}
У меня также есть разрешения, установленные в манифесте, и сам файл создается, но ничего не записывается. Возможно, я неправильно пишу в файл?
Вызывается ошибка FileNotFoundException, поскольку он пытается использовать файл из / document, когда я выбираю его из / downloads
Предлагаемое решение, которое к сожалению не работает:
resultData?.data?.let {
requireActivity().contentResolver.openOutputStream(it).use { stream ->
stream!!.bufferedWriter().write("Example Text")
}
}