안녕하세요 이제 안드로이드 시작한지 일주일 되는 왕초보입니다.

지금 사진 갤러리를 호출하고 거기서 사진을 잘라서 저장하려는데요

잘라서 저장하는거 까지는 잘되는데 사진을 자르는 단계  에서 

취소 버튼을 누를 시 선택된 파일이 사이즈 0 으로 잡히면서 깨진 파일이 생성됩니다. 

그리고 사진을 잘라낸것을 특정 공간에 넣으려고 하는데요 잘안되서 질문좀 드립니다.

com.android.camera.action.CROP  

으로 호출하면 취소 누를 시 선택된것도 취소 되는거 아닌가요?


소스를 보면 우선 사진 갤러리 호출 부분은 아래 와 같이 호출하고요.

Intent intent = new Intent(Intent.ACTION_PICK);

intent.setType(android.provider.MediaStore.Images.Media.CONTENT_TYPE);

intent.setData(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

// 결과를 리턴하는 Activity 호출

startActivityForResult(intent,REQUEST_CODE_GALLERY);


받는 부분

@Override

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

내용생략 .....

switch (requestCode) {

//사진 선택 

case REQUEST_CODE_GALLERY:

Intent intend = new Intent("com.android.camera.action.CROP");

intend.setData(data.getData());

ContentValues values = new ContentValues();

values.put(Media.TITLE, "crop Image");

values.put(Media.BUCKET_ID, "User");

values.put(Media.BUCKET_DISPLAY_NAME, "image");

values.put(Media.IS_PRIVATE, 1);

values.put(Media.MIME_TYPE, "image/jpeg"); //확장자 안붙이면 사진 깨짐 

cropUri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);

intend.putExtra("output", <meta charset="utf-8">cropUri);    //결과받을 Uri

startActivityForResult(intend, REQUEST_CODE_EDIT_PICTURE);


break;

//사진 자른 후

case REQUEST_CODE_EDIT_PICTURE:

//정상 종료

if(resultCode == RESULT_OK){

//질문 1.

//여기서 intend.putExtra("output", cropUri);거를 받아서 넘겨 보려고 하는데요.

//data.hasExtra("output") 이런식으로 구분하면 안되는건가요?

//cropUri는 자른 이미지의 주소이라고 생각하는 데 틀린건가요?

if(){


}


//비정상 종료

}else {

//질문 2.

//사진 자르기 시(cropImage) 저장, 취소 버튼이 잇는데 저장하면 저장이 잘되는데요

//취소를 누르면 위에서 말한거처럼 사이즈가 0이 되면서 깨진 파일이 만들어지는데 

//crop 상태에서는 자동으로 백버튼이 먹는게 아닌가요?(저장 안되면서)

//아니라면 어떻게 처리해야하나요

}

break;

}


답변좀 부탁드립니다.