我已经在我的应用程序中实现了拍照和裁剪。通常它工作得很好。但问题出现在具有 Cooliris 图库的设备上。拍摄图像后出现“Gallery(process com.cooliris.media) 已意外停止”消息。不幸的是,我没有这样的设备,也无法测试它。但是我有一个来自崩溃日志的堆栈跟踪。
E/AndroidRuntime(20624): Caused by: java.lang.NullPointerException
E/AndroidRuntime(20624): at com.cooliris.media.CropImage.loadBitmap(CropImage.java:460)
E/AndroidRuntime(20624): at com.cooliris.media.CropImage.onCreate(CropImage.java:443)
E/AndroidRuntime(20624): at android.app.Activity.performCreate(Activity.java:4465)
E/AndroidRuntime(20624): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052)
E/AndroidRuntime(20624): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932)
E/AndroidRuntime(20624): ... 11 more
我用来拍照的代码:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
imageCaptureUri = Uri.fromFile(getTempImageFile());
intent.putExtra("return-data", true);
startActivityForResult(intent, INTENT_PICK_FROM_CAMERA);
裁剪图像的代码(在此意图的 onActivityResult 中):
Intent intent = new Intent("com.android.camera.action.CROP");
intent.addCategory("android.intent.category.DEFAULT");
intent.addCategory("android.intent.category.ALTERNATIVE");
intent.addCategory("android.intent.category.SELECTED_ALTERNATIVE");
intent.setDataAndType(data.getData(), "image/jpeg");
intent.putExtra("outputX", CROPPED_IMAGE_X);
intent.putExtra("outputY", CROPPED_IMAGE_Y);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);
startActivityForResult(intent, INTENT_CROP_FROM_CAMERA);
似乎 data.getData() 为空,但我不确定。有谁知道可能是什么问题以及如何解决?