我需要将图像保存在 Android 10 下面的 sd_card 的图片目录中。我已经实现了范围存储&此代码适用于 sdk 29 及更高版本,因为 MediaStore.getExternalVolumeNames 已添加到 sdk 29 中。在 sdk 29 下面如何获取getContentUri
sd_card 。
val values = ContentValues().apply {
put(MediaStore.Images.Media.DISPLAY_NAME, destinationFileName)
put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg")
put(MediaStore.Images.Media.RELATIVE_PATH, Environment.DIRECTORY_PICTURES + File.separator + context.applicationContext.getString(R.string.app_name))
put(MediaStore.Images.Media.IS_PENDING, 1)
}
val storageVolume = if (AppPreferences(context).getSwitchExternalStorage()) MediaStore.getExternalVolumeNames(context).last() else MediaStore.getExternalVolumeNames(context).first()
val bmp: Bitmap? = BitmapFactory.decodeFile(source)
val collection = MediaStore.Images.Media.getContentUri(storageVolume)
val imageUri = context.contentResolver.insert(collection, values)
context.contentResolver.openOutputStream(imageUri!!).use { out ->
bmp?.compress(Bitmap.CompressFormat.JPEG, 100, out)
}
values.clear()
values.put(MediaStore.Images.Media.IS_PENDING, 0)
context.contentResolver.update(imageUri, values, null, null)
请帮我解决这个问题