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

storage access framework 킷캣(4.4)

0 추천
예제를 통해 외부메모리에 접근하는 방법을 고민중입니다.

해당 saf예제를 통해 롤리팝[5.0]에서는 외부메모리..[저는 usb저장소를 사용합니다]

가 마운트 되었을 때 왼쪽 메뉴의 저장위치 리스트에 해당 목록이 보입니다.

하지만 os가 킷캣인 기기에선 보이지 않네욥..-_-;

찾아보니 킷캣에서 os기본앱[내파일 등]이 아니면 외부메모리 접근이 안된다는데 이게 맞는말인가요?

참고로 같은 소스로 디버깅한거구요..

단지 os 버전이 다른거라면 사용자인 제가 어떻게할 수가 없는건가요?
망고사탕 (5,000 포인트) 님이 2017년 6월 28일 질문

1개의 답변

+1 추천
 
채택된 답변
보통 kitkat에서는 SAF가 활성화 안되어 있을겁니다. kitkat이하에서는 SAF없이 permission과 같이 그냥 사용하면 됩니다(file system)

참고로 SAF를 통해서 USB storage를 control할려고 하시는 거라면, 거의 불가능이라고 생각하시면 됩니다.

(제가 경험에 빗대어 조언 드립니다. 아무리 써봐도 SAF는 안정화된 framework가 아닙니다.)
디자이너정 (42,810 포인트) 님이 2017년 6월 28일 답변
망고사탕님이 2017년 6월 30일 채택됨
디자이너정님 답변 감사합니다..
제가 원하는 기능은 다음과 같습니다.
HttpURLConnection으로 특정 링크를 통해 파일을 다운받는데, 내부 저장소가 아닌 외부저장소..즉 usb storage(otg로 연결한)로 다이렉트로 저장하는 기능이었습니다.
[파일용량은 최소 50MB에서 1GB까지 다양합니다]
답변주신대로 SAF를 통해 이 작업을 수행하려고 한거구요, 킷캣에선 활성화가 안된것인지 롤리팝과는 다르게 usb storage를 인식하지 못하더라고요.
saf왼쪽메뉴에 보면 내/외부 저장소들이 출력되는데 안나오는걸 보니..;
정말 이 방법이 안된다면 결국, 내부 저장소에 다운로드 파일을 저장한 후 사용자가 내파일 같은 os 기본앱을 통해 usb storage로 옮길 수 밖에 없는 것인지요..? 이 번거로움?을 덜기 위해 직접적으로 usb storage에 저장하려고 한건데 외부저장소를 다루는 api도 공식적으로 나온게 없고.. 그동안은 유저들이 꼼수로만 사용했다고 들어서요.
이제 남은 방법이 SAF뿐인데 일주일동안 고민해봐도 답이 나오질 않네요.
현재 saf를 통해 usb storage에 예제 text파일을 저장하는 것 까진 했는데..
혹시 실례가 되지 않는다면 어떤면에서 saf가 안정화 된 프레임워크가 아닌지, 여쭤봐도 될까요? 공식 문서 등에서도 외부메모리에 접근하기 위해선 saf를 사용하라 권장하고 있기에..ㅠ..그 외에 usb마운트 된 경로를 찾는다거나 이런건 제조사마다 디렉토리가 다르기도 하고 마운트 연결/해제까지는 api가 있으니 감지가 되지만 검색해본 바로는 sd카드나 usb저장소 같은 외부메모리 접근이 힘들다고 알고있어서요..
...