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

Internal Storage, 파일 저장 및 열람

0 추천
안녕하세요.

 

안드로이드에서 파일 저장 및 열람하는 방식에 대하여 궁금한게 생겨 글을 올립니다.

 

현재 제 App에서는 Server로부터 파일을 다운로드받아 "/sdcard/"의 특정한 경로에 저장 후

 

타 앱에서 열어볼 수 있도록 구성되어있습니다. (Intent.setDataAndType()을 이용)

 

여기서 Server로부터 다운로드받은 파일을 외부저장소 (;"/sdcard")가 아닌 App 내부의 저장소

(내부 저장소 경로: /data/user/0/[패키지명]/files/)에다가 저장 후

 

똑같이 Intent.setDataAndType()을 이용하여 파일을 열 수 있도록하려는데요,

 

파일 저장까지는 되지만, 파일 열람 시 타앱에서 '파일을 찾을 수 없습니다.'라고 뜹니다.

 

1. 내부저장소에 저장한 파일은 타앱에서 열람이 불가능한지요?

2. 혹시 permission과 관련이 되어있는건가요?

   FileOutputStream을 생성시 MODE_WORLD_READABLE을 주어도 파일을 찾을 수 없다고 나옵니다.

3. MODE_WORLD_READALBE외에 타앱이 제 앱의 파일을 열어볼 수 있도록 pemission을 설정하는 방법이 또 있나요?

4. 마지막으로, 모든 Android는 SD카드가 장착되어있나요?

   (사실 이것때문에, 외부저장소에서 내부저장소로 저장위치를 바꾸었습니다.)

 

읽어주셔서 감사합니다.
nkSong (1,000 포인트) 님이 2017년 1월 4일 질문

1개의 답변

0 추천
 
채택된 답변
1. 앱 내부 저장소에 파일을 저장하고 다른 앱이 읽게 하려면 ContentProvider를 사용하세요.

2. 보안상의 이유로 앱 내부의 파일 경로를 그냥 다른 앱에 전달하면 읽지 못합니다. MODE_WORLD_READABLE을 설정해도 마찬가지 입니다.

3. ContentProvider를 사용하세요.

2. 외부 저장소 경로는 /sdcard를 사용하지 말고 android.os.Environment.getExternalStorageDirectory 를 사용하세요. 이 경로는 항상 존재합니다.
익명사용자 님이 2017년 1월 4일 답변
nkSong님이 2017년 1월 4일 채택됨
Cordova에서도 Environment.getExternalStorageDirectory를 가져올 수 있겠죠?
답변 감사합니다.
ContentProvider를 우선 알아보도록 하겠습니다.
...