어플 내에서 사진을 촬영하고 그 사진을 이용하여 리스트를 만든 후, 저장된 리스트 확인을
통해 사진을 보는 과정에서 발생하는 에러입니다. 리스트를 클릭하여 저장된 사진을 확인 하였을 때,
갤럭시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/ 이런 식으로 경로가 설정이 될까요?
경로 문제가 아닌가요?