마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

킷캣에서 이미지 크롭 후 이미지가 표시되지 않고 종료되는 현상 어떻게 해야 하나요?

0 추천

사진 불러오기를 하여 앨범에서 이미지 선택 후 크롭하여 이미지 뷰에 보여줘야 되는데

크롭하고 나서 확인 누르면 그냥 크롭화면 사라지더니 이전 액티비티로 돌아갑니다.

킷캣부터 뭔가 바꼈다고 하는데

현재 제가 쓰고 있는 소스는

 

private void doTakePhotoAction()
	  {
		 Log.d(tag,"사진1");
	    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
	    
	    // 임시로 사용할 파일의 경로를 생성
	    String url = "tmp.jpg";
	    
	    mImageCaptureUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), url));
	    
	    intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
	    
	    // 특정기기에서 사진을 저장못하는 문제가 있어 다음을 주석처리 합니다.
	    //intent.putExtra("return-data", true);
	    startActivityForResult(intent, PICK_FROM_CAMERA);
	
	  }
	 
	  
	 private void doTakeAlbumAction()
	  {
	    // 앨범 호출
	    Intent intent = new Intent(Intent.ACTION_PICK);
	    intent.setType(android.provider.MediaStore.Images.Media.CONTENT_TYPE);
	    startActivityForResult(intent, PICK_FROM_ALBUM);
	  }
	 
	 @Override
	  protected void onActivityResult(int requestCode, int resultCode, Intent data)
	  {
	    if(resultCode != RESULT_OK)
	    {
	      return;
	    }

	    switch(requestCode)
	    {
	      case CROP_FROM_CAMERA:
	      {
	        // 크롭이 된 이후의 이미지를 넘겨 받습니다.
	        // 이미지뷰에 이미지를 보여준다거나 부가적인 작업 이후에
	        // 임시 파일을 삭제합니다.
	        final Bundle extras = data.getExtras();
	      
	        if(extras != null)
	        {
	          Bitmap photo = extras.getParcelable("data");
	          mPhotoImageView.setImageBitmap(photo);
	        }
	  
	       
	        // 임시 파일 삭제
	        File f = new File(mImageCaptureUri.getPath());
	        if(f.exists())
	        {
	          f.delete();
	        }
	  
	        break;
	      }
	  
	      case PICK_FROM_ALBUM:
	      {
	        // 이후의 처리가 카메라와 같으므로 일단  break없이 진행합니다.
	        // 실제 코드에서는 좀더 합리적인 방법을 선택하시기 바랍니다.
	        
	        mImageCaptureUri = data.getData();
	      }
	      
	      case PICK_FROM_CAMERA:
	      {
	        // 이미지를 가져온 이후의 리사이즈할 이미지 크기를 결정합니다.
	        // 이후에 이미지 크롭 어플리케이션을 호출하게 됩니다.
	  
	        Intent intent = new Intent("com.android.camera.action.CROP");
	        intent.setDataAndType(mImageCaptureUri, "image/*");
	  
	        intent.putExtra("outputX", 120);
	        intent.putExtra("outputY", 130);
//	        intent.putExtra("aspectX", 1);
//	        intent.putExtra("aspectY", 1);
	        intent.putExtra("scale", true);
	        intent.putExtra("return-data", true);
	  
	        startActivityForResult(intent, CROP_FROM_CAMERA);
	  
	  
	        break;
	      }
	    }
	  

	   
	  }

 

ㅇ ㅣ소스를 쓰고 있거든요.

 

검색은 해봤는데 

ACTION_PICK 또는 ACTION_GET_CONTENT 

이거 때문인가요?

4.4 부터 ACTION_OPEN_DOCUMENT 이거를 써야 한다고 하는거 같기도 해서요

참고 링크입니다

https://medium.com/marojuns-android/kitkat-4-4-%EC%97%90%EC%84%9C-%EB%A7%9E%EB%8B%A5%EB%9C%A8%EB%A6%B0-%EC%9D%B4%EC%8A%88-%EB%B0%8F-%ED%95%B4%EA%B2%B0-1ecb94c24694

어느 부분을 수정해줘야 하나요?

브루스웨인 (8,580 포인트) 님이 2014년 11월 20일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...