안드로이드에서 'open failed: EACCES (Permission denied)' 예외가 발생합니다.


OutputStream myOutput = new FileOutputStream(outFileName); 부분에서 아래와 같은 에러가 발생합니다.

open failed: `EACCES (Permission denied)

문제점을 체크해봤고 android.permission.WRITE_EXTERNAL_STORAGE 도 시도해봤습니다.

이 문제 어떻게 해결할까요?

try {
    InputStream myInput;

    myInput = getAssets().open("XXX.db");

    // 생성된 빈 db의 경로
    String outFileName = "/data/data/XX/databases/"
            + "XXX.db";

    // 비어있는 db를 output stream으로 열기
    OutputStream myOutput = new FileOutputStream(outFileName);

    // input파일에서 output파일로 byte 데이터 전달
    byte[] buffer = new byte[1024];
    int length;
    while ((length = myInput.read(buffer)) > 0) {
        myOutput.write(buffer, 0, length);
    }

    // stream 닫는 부분
    myOutput.flush();
    myOutput.close();
    myInput.close();
    buffer = null;
    outFileName = null;
}
catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

  • 2016년 06월 27일에 작성됨

조회수 450


1 답변


좋아요
0
싫어요
채택취소하기

저도 같은 문제로 고생한적이 있는데요… 제 생각에는 uses-permission 의 위치가 잘못된 것 같아요. 이렇게 고쳐보세요.

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

          ...

        <application>
            ...
              <activity> 
                    ...
              </activity

        </application>

    </manifest> 

uses-permission 태그는 반드시 application 태그 밖에 있어야합니다.

  • 2016년 06월 28일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close