Как сохранить изображения без отображения в галерее

«Как сохранить изображения без отображения в галерее» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для сохранения изображений без отображения в галерее используйте .nomedia файл. Создайте его в папке с изображениями, и медиа-сканер проигнорирует содержимое.

Пример сохранения:

val imageDir = File(context.getExternalFilesDir(null), "hidden_images")
imageDir.mkdirs()
File(imageDir, ".nomedia").createNewFile() // Создаем файл-маркер

// Сохраняем изображение в скрытую папку
val outputStream = FileOutputStream(File(imageDir, "image.jpg"))
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, outputStream)
outputStream.close()

Альтернатива:
Используйте MediaStore с IS_PENDING флагом (API 29+), но после завершения вызовите setIsPending(false), иначе файл не будет виден даже вашему приложению.