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

내부저장소에 저장된 파일 연결 질문드립니다

0 추천
안녕하세요?

고객이 SD카드에 파일을 저장하지 못하게 해서 내부 저장소에 저장하고 있는데요..

FileOutputStream objFileOutStream = openFileOutput(fileName , Context.MODE_PRIVATE);

이런식으로 저장하고

File objFile = new File("/data/data/패키지명/files/"+fileName);

이렇게 가져 오도록 되어 있습니다.

가져온것을 SD카드에 다시 저장 시키면 제대로 파일로 저장이 되는데

파일 뷰어 앱으로 연결시켜 주려고 하면 파일이 없다고 나옵니다.

연결시켜주는 부분은 아래의 코드를 사용했습니다.

                Intent objIntent = new Intent(android.content.Intent.ACTION_VIEW);
                objIntent.setDataAndType(Uri.parse("file://"+ objFile.getAbsolutePath()), "image/*");
                startActivity(objIntent);

어떤부분이 잘못됐을까요?
SM21 (780 포인트) 님이 2015년 9월 21일 질문

2개의 답변

0 추천
파일 뷰어가 해당 경로에 접근 권한이 없기 때문에 열수 없습니다.
aucd29 (218,390 포인트) 님이 2015년 9월 21일 답변
Intent objIntent = new Intent(android.content.Intent.ACTION_VIEW);
                objIntent.setDataAndType(Uri.parse("file://"+ objFile.getAbsolutePath()), "image/*");
                startActivity(objIntent);
이코드를 실행 시켜주는데도 권한이 없는건가요?
그럼 카톡같은 경우는 다운로드 하기 전에 어떤식으로 연결해 주나요?
이미지는 ImageView를 사용해서 보여주는거 같은데 동영상은 동영상 앱으로 연결해 주더라구요..SD카드에 저장하지 않고...
네 접근권한이 없습니다. 샌드박스 구조이므로 타 앱이 본인의 앱의 폴더에 접근할 수 없는 것이고 그래서 보통 공유 저장 공간인 SDCARD 쪽을 이용하는 것이지요
감사합니다. 정말 많을 도움 받았습니다..^^
0 추천
AndroidManifest.xml에서

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

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

추가 하셨는지요.

 

혹은 USB 연결 Type이 Mass Stroage일 경우 파일 접근권한이 Sync된 PC 내에서만 유효하므로 디바이스 Applicaiton에서 SD Card의 접근권한이 사라질 수 있습니다.
익명사용자 님이 2015년 9월 21일 답변
permission은 둘다 추가 되어 있습니다..SD 카드로는 읽고 쓰고 갤러리나 동영상 플레이어로 연결까지 잘 되는데 내부저장소에서 읽고 쓰고는 되나 갤러리나 동영상 플레이어로 연결이 안되는 문제 입니다..
...