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

사진 경로 부분 질문입니다

0 추천
어플 내에서 사진을 촬영하고 그 사진을 이용하여 리스트를 만든 후, 저장된 리스트 확인을

통해 사진을 보는 과정에서 발생하는 에러입니다. 리스트를 클릭하여 저장된  사진을 확인 하였을 때,

갤럭시2에서는 사진이 잘 보이는데 다른 스마트폰에서는 사진이  보이지 않습니다.

그래서 경로명을 확인해본 결과,  잘 작동하는 갤럭시2에서는 sdcard/  이런식으로 경로가 되어있는데

작동하지 않는 스마트폰(갤3)에서는 age/sdcard0/ 이런식으로 경로명이 되어있더군요. 도대체 어떻게

해야할지를 모르겠어서 이렇게 문의 드립니다.

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);
    }

   

   break;
  }
   case PICK_FROM_ALBUM:
   {
    // 이후의 처리가 카메라와 같으므로 일단  break없이 진행합니다.
    // 실제 코드에서는 좀더 합리적인 방법을 선택하시기 바랍니다.
    
    mImageCaptureUri = data.getData();
    image_path=getRealImagePath(mImageCaptureUri);  //사진 경로 지정
   
   }
   
   case PICK_FROM_CAMERA:
   {
    // 이미지를 가져온 이후의 리사이즈할 이미지 크기를 결정합니다.
    // 이후에 이미지 크롭 어플리케이션을 호출하게 됩니다.
    //코드 생략
   }
  }
 }

 private String getRealImagePath(Uri uriPath) {
  // TODO Auto-generated method stub
  String []proj = {MediaStore.Images.Media.DATA};
        Cursor cursor = managedQuery (uriPath, proj, null, null, null);
        int index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        String path = cursor.getString(index);
        path = path.substring(5);
        return path;
 }

 

 

-----------------------------------------------------------
if(v.getId()==R.id.select_image){
  
  doTakeAlbumAction(); //앨범에서 사진을 가지고 오도록 하기위해 doTakeAlbumAction 함수를 호출 한다
 }
------------------------------

이렇게 imag_path를 지정을 하였는데

갤럭시 3 에서는 왜 age/sdcard0/  이런 식으로 경로가 설정이 될까요?

경로 문제가 아닌가요?
김니이 (420 포인트) 님이 2013년 7월 30일 질문

1개의 답변

0 추천

path = path.substring(5);

를 지우세요.

Elex (9,090 포인트) 님이 2013년 7월 30일 답변
...