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

사진촬영해서 이미지를 가져오려는데 오류가 나서 로드를 못하는데 오류가뭘까요ㅠㅠㅠ!!!!

0 추천

우선 출처는 : http://jeongchul.tistory.com/287  여기서 그대로 소스를 복사해왔구요 DB를 구성하기 전까지는 사진촬영하고 crop한 이미지를 해당 이미지뷰에 문제없이 보여줬는데 db를 생성한 이후 사진을 촬영하고 크롭하는거까진 되는데 저장버튼을 누르면 해당이미지뷰에 사진을 로드하지를 못해요 ㅠㅠ 

해당소스만 첨부하자면

/**
 * 카메라에서 사진 촬영
 */
public void doTakePhotoAction() // 카메라 촬영 후 이미지 가져오기
{
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);


    // 임시로 사용할 파일의 경로를 생성
    String url = "tmp_" + String.valueOf(System.currentTimeMillis()) + ".jpg";
    mImageCaptureUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), url));


    intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
    startActivityForResult(intent, PICK_FROM_CAMERA);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);


    if(resultCode != RESULT_OK)
        return;


    switch(requestCode)
    {
       
        case PICK_FROM_CAMERA:
        {
            // 이미지를 가져온 이후의 리사이즈할 이미지 크기를 결정합니다.
            // 이후에 이미지 크롭 어플리케이션을 호출하게 됩니다.
            Intent intent = new Intent("com.android.camera.action.CROP");
            intent.setDataAndType(mImageCaptureUri, "image/*");


            // CROP할 이미지를 200*200 크기로 저장
            intent.putExtra("outputX", 200); // CROP한 이미지의 x축 크기
            intent.putExtra("outputY", 200); // CROP한 이미지의 y축 크기
            intent.putExtra("aspectX", 1); // CROP 박스의 X축 비율
            intent.putExtra("aspectY", 1); // CROP 박스의 Y축 비율
            intent.putExtra("scale", true);
            intent.putExtra("output", mImageCaptureUri);
            intent.putExtra("return-data", true);
            startActivityForResult(intent, CROP_FROM_iMAGE); // CROP_FROM_CAMERA case문 이동
            Log.d(TAG, "**********************sendMassage PIck_from_camera******************");
            break;
        }
}
여기서 DB에 URI를 넣기 위해 
String str_image =  mImageCaptureUri.toString();

이런식으로 뽑아와서 PUT해주는데 

mImageCaptureUri 변수자체가 갤러리에서 이미지를 선택했을때 뽑아오는URI와도 같아요 근데 갤러리에서 이미지 선택했을땐 잘 로드되는데 유독 카메라에서 촬영하려할때 안되네요 ㅠㅠ 퍼미션도 받았어요

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

이게 오류메세지예요!

Failed to mkdirat(/storage/extSdCard/Android): Read-only file system
뚜루루루둡 (1,130 포인트) 님이 2016년 11월 13일 질문

1개의 답변

0 추천

http://stackoverflow.com/questions/12853752/eaccess-permission-denied-in-android

Failed to mkdirat(/storage/extSdCard/Android): Read-only file system

extSdCard는 내부 저장소가 아닌 외부저장소를 가르킵니다.

해당 답변을 보면 일반적인 앱이 os단의 시그니쳐 사인없이 쓰기권한을 실행할수 없다는군요(카카오톡은 뭐지...?)

루트익스플로러같은 루팅앱을 통하여 권한을 변경하시던가

아니면 내부저장소로 쓰기 위치를 변환하여야 할 것 같습니다

 

추가: 안드로이드 사이드에 더 정확한 답변이 있어서 추가합니다

http://www.androidside.com/plugin/mobile/board.php?bo_table=B49&wr_id=139353

익명사용자 님이 2016년 11월 14일 답변
2016년 11월 14일 수정
...