본문 바로가기

Library/Android in Cafe Java

외부 저장 장치에 저장한 파일이 나타나지 않는다면

추가 SD 카드를 가지지 않는 안드로이드 폰을 사용할 때, 앱 개발 도중 외부 저장 공간에 파일을 저장했음에도 윈도우 탐색기에서 저장한 파일을 볼 수 없는 경우가 있다. 이것은 아직 고쳐지지 않은 안드로이드의 버그인데, 폰을 재부팅해야 최근에 저장한 파일을 볼 수 있다. 재부팅이 귀찮다면, 저장 장치에 대한 미디어 스캔을 수행하는 앱을 사용할 수도 있다.

 

안드로이드의 API는 내부, 외부 개념을 사용하여 저장 장치를 구별하지만, 사실 외부 저장 장치는 추가 SD 카드만을 의미하는 것이 아니다. 따라서, 추가 SD 카드를 지원하지 않는 안드로이드 폰을 사용한다면, getExternalStorageDirectory()의 결과는 폰에 따라 다르게 나타날 수 있다. 메모리 부족에 시달렸던 과거의 폰들과 달리, 현 세대 폰들은 SD 카드를 굳이 장착하지 않더라도 내부에서 넉넉한 여유 저장 공간을 제공한다. 이 여유 공간들은 꼭 /mnt/sdcard만을 의미하는 것이 아니기 때문에 getExternalStorageDirectory()의 결과는 /storage/emulated/0과 같은 심볼릭 링크로도 나타날 수 있다. 즉, 안드로이드의 내부 / 외부 저장 공간이란 저장 장치의 물리적인 구별과 상관 없는, 저장 공간이 기본적으로 제공하는 파일 접근 권한에 따른 구별이다. 내부 저장 공간은, 루팅을 하지 않는 다면 런타임 시점에서 해당 앱 이외의 다른 앱들이 접근할 수 없으며, 외부 저장 공간은 어떠한 앱도 읽고 쓸 수 있다.