Android调用google原生裁剪,兼容三方相册裁剪功能
效果图
实现功能
本篇文章裁剪功能实现兼容Android6+,解决部分google手机(有部分Android10的Google手机无法使用google自带裁剪功能)解决三星手机多相册非系统裁剪失败问题
关于拍照和图库选取的功能可以参考《compose中实现拍照和选取相册功能兼容android 13+》,本篇不做赘述。
编写CropImage类继承 ActivityResultContract
class CropImage : ActivityResultContract<CropImageResult, PictureResult>() {
var outUri: Uri? = null
companion object {
val instance get() = Helper.obj
}
private object Helper {
val obj = CropImage()
}
override fun createIntent(context: Context, input: CropImageResult): Intent {
//系统裁剪
val intent = Intent("com.android.camera.action.CROP")
val mimeType = context.contentResolver.getType(input.uri)
val imageName = "${
input.imageName}.${
MimeTypeMap.getSingleton().getExtensionFromMimeType(mimeType)
}"
outUri = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
val values = ContentValues()
values.