MiUi4.5.30 调用系统相机并且剪裁出现:No Activity found to handle Intent { act=com.android.camera.action.CROP

升级MiUi4.5.30后,调用系统相机并尝试剪裁图片时遇到ActivityNotFoundException错误。错误日志显示系统找不到处理裁剪Intent的Activity。为解决此问题,采取的措施是将拍照和裁剪分开进行,首先调用相机拍照,然后使用特定的裁剪Intent启动裁剪活动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统升级之前还好好的,结果升级之后这里就出错了

仔细看了下,说系统找不到剪裁的activity,不知道小米在相机源码里面又改什么了

网上看了半天也没找到什么好方法,现在只好把拍照和剪裁分开了

 

 

错误日志:

06-01 14:05:39.416: E/AndroidRuntime(896): FATAL EXCEPTION: main
06-01 14:05:39.416: E/AndroidRuntime(896): java.lang.IllegalStateException: Could not execute method of the activity
06-01 14:05:39.416: E/AndroidRuntime(896):  at android.view.View$1.onClick(View.java:3676)
06-01 14:05:39.416: E/AndroidRuntime(896):  at android.view.View.performClick(View.java:4171)
06-01 14:05:39.416: E/AndroidRuntime(896):  at android.view.View$PerformClick.run(View.java:17097)
06-01 14:05:39.416: E/AndroidRuntime(896):  at android.os.Handler.handleCallback(Handler.java:615)
06-01 14:05:39.416: E/AndroidRuntime(896):  at android.os.Handler.dispatchMessage(Handler.java:92)
06-01 14:05:39.416: E/AndroidRuntime(896):  at android.os.Looper.loop(Looper.java:137)
06-01 14:05:39.416: E/AndroidRuntime(896):  at android.app.ActivityThread.main(ActivityThread.java:4881)
06-01 14:05:39.416: E/AndroidRuntime(896):  at java.lang.reflect.Method.invokeNative(Native Method)
06-01 14:05:39.416: E/AndroidRuntime(896):  at java.lang.reflect.Method.invoke(Method.java:511)
06-01 14:05:39.416: E/AndroidRuntime(896):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:808)
06-01 14:05:39.416: E/AndroidRuntime(896):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:575)
06-01 14:05:39.416: E/AndroidRuntime(896):  at dalvik.system.NativeStart.main(Native Method)
06-01 14:05:39.416: E/AndroidRuntime(896): Caused by: java.lang.reflect.InvocationTargetException
06-01 14:05:39.416: E/AndroidRuntime(896):  at java.lang.reflect.Method.invokeNative(Native Method)
06-01 14:05:39.416: E/AndroidRuntime(896):  at java.lang.reflect.Method.invoke(Method.java:511)
06-01 14:05:39.416: E/AndroidRuntime(896):  at android.view.View$1.onClick(View.java:3671)
06-01 14:05:39.416: E/AndroidRuntime(896):  ... 11 more
06-01 14:05:39.416: E/AndroidRuntime(896): Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.android.camera.action.CROP dat=file:///data/data/com.android.camera/files/crop-temp (has extras) }
06-01 14:05:39.416: E/AndroidRuntime(896):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545)
06-01 14:05:39.416: E/AndroidRuntime(896):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416)
06-01 14:05:39.416: E/AndroidRuntime(896):  at android.app.Activity.startActivityForResult(Activity.java:3427)
06-01 14:05:39.416: E/AndroidRuntime(896):  at android.app.Activity.startActivityForResult(Activity.java:3388)
06-01 14:05:39.416: E/AndroidRuntime(896):  at com.android.camera.Camera.doAttach(Camera.java:1757)
06-01 14:05:39.416: E/AndroidRuntime(896):  at com.android.camera.Camera.onReviewDoneClicked(Camera.java:1651)
06-01 14:05:39.416: E/AndroidRuntime(896):  ... 14 more
06-01 14:05:39.426: W/ActivityManager(518):   Force finishing activity com.android.camera/.Camera

解决办法:

1.先调用相机拍照,但是不裁剪

Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//    i.putExtra(MediaStore.Images.Media.ORIENTATION, 0);
//   i.putExtra("crop", "true");
   i.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

   this.startActivityForResult(i, 1);

2.调用裁剪的activity

Intent intent = new Intent("com.android.camera.action.CROP");
   intent.setDataAndType(uri, "image/*");
   intent.putExtra("crop", "true");
   intent.putExtra("aspectX", 4);
   intent.putExtra("aspectY", 3);
   intent.putExtra("outputX", outputX);
   intent.putExtra("outputY", outputY);
   intent.putExtra("scale", true);
   intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
   intent.putExtra("return-data", false);
   intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
   intent.putExtra("noFaceDetection", true); // no face detection
   startActivityForResult(intent, 2);

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值