Android 10 分区储存适配, 保存图片到系统相册

2022-07-14  本文已影响0人  da7091fa95b5

关键代码:
'''

        val bitName = "${UUID.randomUUID()}.jpg"
        try {
            val saveFile = File(
                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
                bitName
            )
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
                val values = ContentValues()
                values.put(MediaStore.Images.Media.DISPLAY_NAME, bitName)
                values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpg")
                values.put(
                    MediaStore.MediaColumns.RELATIVE_PATH,
                    "${Environment.DIRECTORY_PICTURES}/"
                )
                val uri = context.contentResolver.insert(
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                    values
                )!!
                context.contentResolver?.openOutputStream(uri).use { output ->
                    if (bitmap.compress(Bitmap.CompressFormat.JPEG, 90, output)) {
                        output?.flush()
                    }
                }
            } else {
                FileOutputStream(saveFile).use {
                    if (bitmap.compress(Bitmap.CompressFormat.JPEG, 90, it)) {
                        it.flush()
                    }
                }
            }
            // android Q也可以用这个方法扫描图片
            MediaScannerConnection.scanFile(
                context,
                arrayOf(saveFile.absolutePath),
                arrayOf("image/jpeg")
            ) { _, _ ->
            }
            // 保存成功
        } catch (e: Exception) {
            // 出错
        }

最后通知系统扫描图片的方法AndroidQ也有效, 传入图片绝对路径就可以

上一篇下一篇

猜你喜欢

热点阅读