안드로이드 개발 질문/답변
(글 수 45,052)
요 며칠 디렉토리 생성과 파일 쓰기에 질문글을 올렸었는데요..
혹시나 했었는데 오늘 작업을 하다보니 더 그 이유가 확실해 지는 기분이 드는데요...
다른 패키지를 기존 제가 개발하는 앱과 합쳐 보았는데 그 다른 앱을 별도로
실행하였을 때는 잘 구동하는데 제 패키지에 합쳐서 구동을 시켜보니
이미지 파일이 없다는 에러가 나서 에러 메세지를 보니
편의상 제 앱을 A로 치고 붙이려는 외부 앱을 B라고 하겠습니다...
요 며칠 제가 해결하지 못한 java.io.FileNotFoundException 에러가 나네요...
그래서 혹시 패키지마다 해당 패키지가 쓰기 가능한 경로가 지정되어있는데
B 패키지가 B 패키지에서 저의 A 패키지로 옮겨오면서 B 패키지에게 할당된 경로로
파일을 쓰려고 하니 권한이 없어서 디나이(파일 저장x)된 후 그 이미지를 참조하려고
해서 에러가 난거 같아요....
제가 생각한게 맞나요...?
맞다면 자신의 패키지가 쓰기 가능한 경로는 어딘가요? 아니면 어떻게 찾나요...?




data/data/패키지명/files 디렉토리에 있습니다.. 내장 메모리를 사용할 경우는 안드로이드에서 내부적으로 패키지 하위디렉토리만 접근이 가능하기 때문에 경로는 임의로 그렇게 정의되 있고 파일이름만 가지고 지정을 하게 됩니다. 그래서 A패키지에서 파일을 읽을 때 자기패키지 하위 files폴더만 바라보게 되서 위의 fileNotFoundException이 발생하게 된 것 같습니다.
외부 패키지에서 데이터를 전달하는 방법은 컨텐트 프로바이더나 프리퍼런스, 외장 sc카드를이용한 caching등등이 있는데.. 위에 예처럼 이미지를 불러오는 경우 가장 간단한 방법은 context를 이용한것입니다.
createPackageContext(이름이 확실치 않음)와 openFileInputStream(이 역시... ctrl-space중독이라서 ㅡㅡ) 를 이용하시면 위의 경우는 해결하실 수 있을 겁니다.