系统升级之前还好好的,结果升级之后这里就出错了
仔细看了下,说系统找不到剪裁的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);