Android 部分机型裁剪正常完成 但是 resultCode 一直返回0 data一直返回null

这里裁剪完成,在图库中能看到正常看到裁剪后的图片

但是resultCode 一直返回0 data一直返回null

resultCode: -1 表示成     0 表示取消了操作

这种情况下 需要检查一下发起该裁剪任务activity或者所属的activity  (fragment 运行必须依赖activity)

注意注意注意   launchMode  一定不要设置为 singleInstance
launchMode直接修改为默认 裁剪回调就正常了



其他需要注意的地方 选择图库 进行裁剪时需要注意 图库的图片地址为公共地址
裁剪任务不要临时授权 如果授权的话 部分手机会出错
我这里测试了 miui临时授权写权限,会导致出错

使用拍照 进行裁剪时 返回的地址为私有地址
则需要临时授权,否则无法裁剪
临时授权代码如下
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)


裁剪目录输出目录的设置

使用Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) 路径
出现很多问题,仅在模拟器测试成功 直接pass掉了

我这里使用的如下方法返回的uri 传一个文件名就可以 比如  name = "123.jpg"
private fun getCropUri(name: String): Uri? {
    val values = ContentValues()
    values.put(MediaStore.Images.Media.DISPLAY_NAME, name)
    values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg")
    values.put(MediaStore.Images.Media.DATE_MODIFIED, System.currentTimeMillis() / 1000)
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        values.put(MediaStore.Images.Media.RELATIVE_PATH, Environment.DIRECTORY_DCIM)
    }
    return requireContext().contentResolver.insert(
        MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
        values
    )
}



val cropUri =
getCropUri("crop_face_${System.currentTimeMillis()}.jpg")
intent.putExtra(MediaStore.EXTRA_OUTPUT,cropUri)


图片裁剪异常问题

原文地址:https://www.cnblogs.com/rchao/p/15801174.html