Попытка сохранить файл PDF в каталоге загрузок, но после того, как getExternalStoragePublicDirectory
полностью устарела после Android Q, невозможно сохранить файлы в каком-либо другом месте, кроме папки DCIM или Pictures, так как при возникновении следующего исключения пытается сохранить файл там.
IllegalArgumentException: первичная директория Загрузка запрещена для контента: // media / external / images / media; допустимые каталоги: [DCIM, изображения]
имеют следующий код.
private fun saveFile(input: ByteArray) {
val fileName = "myFile.pdf"
val outputStream = if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.Q) {
val directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
val file = File(directory, fileName)
FileOutputStream(file)
} else {
val resolver = context.contentResolver
val contentValues = ContentValues().apply {
put(MediaStore.MediaColumns.DISPLAY_NAME, fileName)
put(MediaStore.MediaColumns.MIME_TYPE, "images/*")
put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DOWNLOADS)
}
resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues)?.let {
resolver.openOutputStream(it)
}
}
outputStream?.use { stream ->
stream.write(input)
}
}
Очевидно, что при изменении пути на DIRECTORY_DCIM все работает как положено, но из-за требований файл должны быть сохранены в загрузках, как и ранее. Буду признателен за любую помощь.