Основной каталог Загрузка носителя не разрешена ⇐ Android
-
Гость
Основной каталог Загрузка носителя не разрешена
Пытаюсь сохранить файл PDF в каталоге загрузок, но после того, как getExternalStoragePublicDirectory полностью устарел после Android Q, невозможно сохранить файлы в любом другом месте, кроме папки DCIM или Pictures, как следующее исключение вылетает при попытке сохранить там файл.
IllegalArgumentException: загрузка основного каталога не разрешена контент://медиа/внешний/изображения/медиа; разрешенные каталоги: [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 = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) val file = Файл (каталог, имя файла) FileOutputStream (файл) } еще { valsolver = context.contentResolver val contentValues = ContentValues().apply { put(MediaStore.MediaColumns.DISPLAY_NAME, имя_файла) 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(оно) } } выходной поток?.use {поток -> поток.запись (вход) } } Очевидно, что при изменении пути к DIRECTORY_DCIM все работает как положено, но по требованиям файл должен быть сохранен в загрузках, как и раньше. Буду признателен за любую помощь.
Пытаюсь сохранить файл PDF в каталоге загрузок, но после того, как getExternalStoragePublicDirectory полностью устарел после Android Q, невозможно сохранить файлы в любом другом месте, кроме папки DCIM или Pictures, как следующее исключение вылетает при попытке сохранить там файл.
IllegalArgumentException: загрузка основного каталога не разрешена контент://медиа/внешний/изображения/медиа; разрешенные каталоги: [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 = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) val file = Файл (каталог, имя файла) FileOutputStream (файл) } еще { valsolver = context.contentResolver val contentValues = ContentValues().apply { put(MediaStore.MediaColumns.DISPLAY_NAME, имя_файла) 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(оно) } } выходной поток?.use {поток -> поток.запись (вход) } } Очевидно, что при изменении пути к DIRECTORY_DCIM все работает как положено, но по требованиям файл должен быть сохранен в загрузках, как и раньше. Буду признателен за любую помощь.
Мобильная версия