Android取消裁剪不会返回活动结果

时间:2013-05-26 02:06:31

标签: android bitmap crop

我可以从图库中选择一张图片,裁剪并将其设为bundle。我以这种方式检索它:

if (resultCode == Activity.RESULT_OK) {
      if (requestCode == SELECT_IMAGE || requestCode == SELECT_LANDSCAPE_IMAGE) {
           Bundle extras = data.getExtras();
           Bitmap photo = extras.getParcelable("data");
                .........................
      }
}

一切正常。但是当我取消裁剪时,没有收到任何捆绑。我想在取消裁剪时收到实际的位图。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

我找到了解决方案:

if (requestCode == CROP_FROM_CAMERA && resultcode == RESULT_CANCELED {
  // crop was cancelled
}

答案 1 :(得分:-1)

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == AppConstant.PICK_PROFILE_PIC) {
        // getActivity();
        if (resultCode == Activity.RESULT_OK && data != null) {
            selectedImage = data.getData();
            String[] filePathColumn = {MediaStore.Images.Media.DATA};

            Cursor cursor = getContentResolver().query(
                    selectedImage, filePathColumn, null, null, null);

            // some devices (OS versions return an URI of com.android
            // instead of com.google.android
            if (selectedImage.toString().startsWith(
                    "content://com.android.gallery3d.provider")) {
                // use the com.google provider, not the com.android
                // provider.
                selectedImage = Uri.parse(selectedImage.toString().replace(
                        "com.android.gallery3d",
                        "com.google.android.gallery3d"));
            }

            if (cursor != null) {
                int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                if (selectedImage.toString().startsWith(
                        "content://com.google.android.gallery3d")) {
                    columnIndex = cursor
                            .getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME);
                    if (columnIndex != -1) {
                        new GetBitmap(getApplicationContext(), selectedImage)
                                .execute();
                    }
                } else if (selectedImage.toString().startsWith(
                        "content://com.google.android.apps.photos.content")) {
                    new GetBitmap(getApplicationContext(), selectedImage).execute();
                } else {
                    cursor.moveToFirst();
                    mPicturePath = cursor.getString(columnIndex);
                    ImageUtils.rotateImage(getApplicationContext(), mPicturePath);
                    addGalleryImage(mPicturePath);
                }
            }
            cursor.close();
        }
        performCrop();

    } else if (requestCode == AppConstant.CLICK_IMAGE) {
        File f = new File(Environment.getExternalStorageDirectory()
                .toString());
        for (File temp : f.listFiles()) {
            if (temp.getName().equals(AppConstant.TEMP_IMAGE_NAME)) {
                f = temp;
                break;
            }
        }
        mPicturePath = f.toString();

        mBitmap = ImageUtils.rotateImage(this, mPicturePath);
        ImageUtils.setBitmapToView(mBitmap, mProfilePic);

       Toast.makeText(RegistrationActivity.this, mPicturePath + "", Toast.LENGTH_LONG).show();

    } else if (requestCode == AppConstant.CROP_IMAGE && resultCode != RESULT_CANCELED) {
        // get the returned data
        Bundle extras = data.getExtras();
        // get the cropped bitmap

        Bitmap thePic = extras.getParcelable("data");
            // retrieve a reference to the ImageView

            // display the returned cropped image
            GraphicsUtil graphicUtil = new GraphicsUtil();
            // picView.setImageBitmap(graphicUtil.getRoundedShape(thePic,(float)1.5,92));
            mProfilePic.setImageBitmap(graphicUtil.getCircleBitmap(
                    thePic, 16));
        Toast.makeText(RegistrationActivity.this, mPicturePath + "", Toast.LENGTH_LONG).show();

    }
    else if (requestCode == AppConstant.CROP_IMAGE && resultCode == RESULT_CANCELED) {
        Toast.makeText(RegistrationActivity.this, mPicturePath + "", Toast.LENGTH_LONG).show();

    }
}