Убедитесь, что у вас включены разрешения на чтение / запись во время выполнения, и после этого вы просто можете использовать этот код для сохранения любого файла в каталоге.
fun saveImageToExternalStorage(image:Bitmap) {
val fullPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/downloads"
try
{
val dir = File(fullPath)
if (!dir.exists())
{
dir.mkdirs()
}
val fOut:OutputStream = null
val file = File(fullPath, "image.png")
if (file.exists())
file.delete()
file.createNewFile()
fOut = FileOutputStream(file)
// 100 means no compression, the lower you go, the stronger the compression
image.compress(Bitmap.CompressFormat.PNG, 100, fOut)
fOut.flush()
fOut.close()
}
catch (e:Exception) {
Log.e("saveToExternalStorage()", e.message)
}
}