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.

文章介绍了如何在Android应用中创建一个名为CropImage的类,该类继承ActivityResultContract以实现兼容Android6+的图片裁剪功能。特别地,这个解决方案旨在解决Google手机(包括某些Android10设备)和三星手机的裁剪问题,以及授权第三方相册访问裁剪结果的权限。通过CropImage类,开发者可以指定裁剪尺寸、比例,并处理不同制造商设备的差异。
最低0.47元/天 解锁文章
772

被折叠的 条评论
为什么被折叠?



