안드로이드에서 'open failed: EACCES (Permission denied)' 예외가 발생합니다.
조회수 3812회
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();
}
1 답변
-
저도 같은 문제로 고생한적이 있는데요… 제 생각에는 uses-permission 의 위치가 잘못된 것 같아요. 이렇게 고쳐보세요.
<manifest> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> ... <application> ... <activity> ... </activity </application> </manifest>
uses-permission 태그는 반드시 application 태그 밖에 있어야합니다.
댓글 입력