2013-05-26 22 views
0

我可以從圖庫中選取圖像,裁剪並將其作爲bundle獲取。我以這種方式檢索它:Android取消作物不會返回活動結果

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

一切工作正常。但是當我取消裁剪時,不會收到任何包。我想在取消裁剪時收到實際的位圖。我怎樣才能做到這一點?

+0

如果他們取消,它可能不會返回RESULT_OK。 –

回答

0

我已經找到了解決辦法:

if (requestCode == CROP_FROM_CAMERA && resultcode == RESULT_CANCELED { 
    // crop was cancelled 
} 
-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(); 

    } 
} 
相關問題