Я пытаюсь сохранить файл в формате .gpx.
Значит, это подтип xml.
ActivityResultContracts.CreateDocument()Контракт , который я использую, сообщает мне, что тип mime необходим, поскольку метод подстановочных знаков устарел. Если я установлю mime-тип text/xml, мой файл будет сохранен с типом .xml, но мне нужен .gpx.
Я пытался найти gpx тип mime, но похоже, что он не существует.
Я использую RegisterForActivityResult(ActivityResultContracts.OpenDocument()) для выбора файла из системного проводника. Чтобы запустить этот лаунчер, нам нужно вызвать Picker.launch(MIME_TYPE) и установить внутри MIME-тип. Итак, я пытаюсь установить тип mime application/gpx+xml и не могу выбрать созданные мной файлы, потому что они имеют другой тип. Я только что вошел в систему и обнаружил, что у них есть тег text/xml.
Так какой тип мне следует использовать?
private val openPointDocumentLauncher = registerForActivityResult(ActivityResultContracts.OpenDocument()) { uri ->
uri?.let { readPointsFromFile(uri) }
}
private val exportFilePickerLauncher = registerForActivityResult(
ActivityResultContracts.CreateDocument("which should i use here?")
) { uri ->
uri?.let { writePointsToFile(uri) }
}
binding.btn1.setOnClickListener { exportFilePickerLauncher.launch("my_file_${System.currentTimeMillis()}.gpx") }
binding.btn2.setOnClickListener { openPointDocumentLauncher.launch(arrayOf("which mime type we using?")) }
fun writePointsToFile(source: Uri) {
context.contentResolver.openOutputStream(source, "w")?.bufferedWriter()?.use { stream ->
val xmlString = // formin GPX string right here
stream.write(xmlString)
}
}
suspend fun readPointsFromFile(source: Uri) {
context.contentResolver.openInputStream(source)?.use { inputStream ->
// dealing with picked file right here
}
}
Подробнее здесь: https://stackoverflow.com/questions/744 ... -mime-type
Что такое тип MIME .GPX? ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение