0
我有代码即可裁剪图片这样错误,没有任何活动来处理意图裁剪图像的Android
crop.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
mImageCaptureUri = Uri.parse(path);
doCrop();
如果按钮作物的点击,它就会运行这段代码即可裁剪图片
protected void doCrop(){
final ArrayList<CropOption> cropOptions = new ArrayList<CropOption>();
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setType("image/*");
List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, 0);
int size = list.size();
if (size == 0) {
Toast.makeText(this, "Can not find image crop app", Toast.LENGTH_SHORT).show();
return;
} else {
intent.setData(mImageCaptureUri);
intent.setType("image/*");
intent.putExtra("outputX", 200);
intent.putExtra("outputY", 200);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);
//intent.putExtra("output", mImageCaptureUri);
if (size == 1) {
Intent i = new Intent(intent);
ResolveInfo res = list.get(0);
i.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
startActivityForResult(i, HASIL_CROP);
} else {
for (ResolveInfo res : list) {
final CropOption co = new CropOption();
co.title = getPackageManager().getApplicationLabel(res.activityInfo.applicationInfo);
co.icon = getPackageManager().getApplicationIcon(res.activityInfo.applicationInfo);
co.appIntent= new Intent(intent);
co.appIntent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
cropOptions.add(co);
}
CropOptionAdapter adapter = new CropOptionAdapter(getApplicationContext(), cropOptions);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Choose Crop App");
builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
startActivityForResult(cropOptions.get(item).appIntent, CROP_FROM_CAMERA);
}
});
builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
if (mImageCaptureUri != null) {
getContentResolver().delete(mImageCaptureUri, null, null);
mImageCaptureUri = null;
}
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
我从这个代码
String oldFile = path;
String imageTemp = "E"+System.currentTimeMillis();
path = tempPath + imageTemp + ".jpg"; //alamat temporari image
FileOutputStream ostream = new FileOutputStream(path);
b.compress(CompressFormat.JPEG, 50, ostream);
ostream.close();
mImageCaptureUri = Uri.parse(path);
得到mImageCaptureUri但是当我点击按钮作物它什么也没有发生,下面logcat中 10-24 16:47:21.669:INFO/ActivityManager(59):开始活动:Intent {act = com.android.camera.action.CROP typ = image/* cmp = com.android.gallery/com.android。 camera.CropImage(有演员)}
我想这是因为
intent.setData(mImageCaptureUri);
intent.setType("image/*");
但如果我抹去intent.setType( “图像/ *”),它显示错误
10-24 16:51:24.549: ERROR/UriImage(345): got exception decoding bitmap
10-24 16:51:24.549: ERROR/UriImage(345): java.lang.NullPointerException
10-24 16:51:24.549: ERROR/UriImage(345): at com.android.camera.gallery.UriImage.getPFD(UriImage.java:67)
10-24 16:51:24.549: ERROR/UriImage(345): at com.android.camera.gallery.UriImage.fullSizeBitmap(UriImage.java:93)
10-24 16:51:24.549: ERROR/UriImage(345): at com.android.camera.gallery.UriImage.fullSizeBitmap(UriImage.java:86)
10-24 16:51:24.549: ERROR/UriImage(345): at com.android.camera.gallery.UriImage.thumbBitmap(UriImage.java:120)
10-24 16:51:24.549: ERROR/UriImage(345): at com.android.camera.CropImage.onCreate(CropImage.java:143)
10-24 16:51:24.549: ERROR/UriImage(345): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
人可以帮忙吗?
谢谢