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也有效, 传入图片绝对路径就可以