I solved this by creating a new file before calling Intent and passing the file path to store the cropped image with the intent. Here is the solution for this.
private Uri mCropImagedUri; private final int CROP_IMAGE = 100;//unique request code number. Which is used to identify the request result in onActivityResult() /**Crop the image * @return returns <tt>true</tt> if crop supports by the device,otherwise false*/ private boolean performCropImage(){ try { if(mFinalImageUri!=null){ //call the standard crop action intent (the user device may not support it) Intent cropIntent = new Intent("com.android.camera.action.CROP"); //indicate image type and Uri cropIntent.setDataAndType(mFinalImageUri, "image/*"); //set crop properties cropIntent.putExtra("crop", "true"); //indicate aspect of desired crop cropIntent.putExtra("aspectX", 1); cropIntent.putExtra("aspectY", 1); cropIntent.putExtra("scale", true); //indicate output X and Y cropIntent.putExtra("outputX", 500); cropIntent.putExtra("outputY", 500); //retrieve data on return cropIntent.putExtra("return-data", false); File f = createNewFile("CROP_"); try { f.createNewFile(); } catch (IOException ex) { VLLog.e("io", ex.getMessage()); } mCropImagedUri = Uri.fromFile(f); cropIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCropImagedUri); //start the activity - we handle returning in onActivityResult startActivityForResult(cropIntent, CROP_IMAGE); return true; } } catch(ActivityNotFoundException anfe){ //display an error message String errorMessage = "Whoops - your device doesn't support the crop action!"; Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT); toast.show(); return false; } return false; } private File createNewFile(String prefix){ if(prefix==null || "".equalsIgnoreCase(prefix)){ prefix="IMG_"; } File newDirectory = new File(Environment.getExternalStorageDirectory()+"/mypics/"); if(!newDirectory.exists()){ if(newDirectory.mkdir()){ VLLog.d(mContext.getClass().getName(), newDirectory.getAbsolutePath()+" directory created"); } } File file = new File(newDirectory,(prefix+System.currentTimeMillis()+".jpg")); if(file.exists()){ //this wont be executed file.delete(); try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } return file; }
So, here we should not worry about the data that is included in the onActivityResult() method.
Here is the complete cropping information. I used this to solve. http://www.androidworks.com/crop_large_photos_with_android
source share