Slide 61
Slide 61 text
scoped storage
creating new media
suspend fun duplicateMedia(resolver: ContentResolver, media: Media, bitmap: Bitmap) {
withContext(Dispatchers.IO) {
val collection = MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY)
val newMedia = ContentValues().apply {
put(MediaStore.Images.Media.DISPLAY_NAME, “${media.name}-cp.${media.extension}")
put(MediaStore.MediaColumns.MIME_TYPE, "image/png")
put(MediaStore.MediaColumns.DATE_MODIFIED, System.currentTimeMillis())
put(MediaStore.Images.Media.IS_PENDING, 1)
}
val newMediaUri = resolver.insert(collection, newMedia)
resolver.openOutputStream(newMediaUri#!!, "w").use {
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, it)
}
newMedia.clear()
newMedia.put(MediaStore.Images.Media.IS_PENDING, 0)
resolver.update(newMediaUri, newMedia, null, null)
}
}