안드로이드 기기의 추가 SD CARD 마운트 위치

안드로이드 기기는 내부에서 사용하는 SD CARD와 더불어 추가로 SD CARD를 연결해서 사용할 수 있다. 물론 USB도 사용할 수 있고, USB 마운트 위치는 이곳에서 확인할 수 있다. 안드로이드 파일 관련한 작업을 개발하다 보면, 공식(API와 넥서스 기기)으로 지원하지 않는 형태(USB 마운트 및 제조사별의 마운트 위치로 인한)를 지원하다 보니, 안드로이드 기기의 파편화를 제대로 느낄 수 있다.

개발자들의 성지인 스택오버플로에서 검색으로 추가한 SD CARD를 확인하는 방법을 살펴보니, 정답은 없겠지만, 아래의 방법으로 추가 SD CARD를 확인하는 것이 좋을 듯했다.

System.getenv("SECONDARY_STORAGE")

위 설정 값을 사용해서 2개 이상의 SD CARD가 마운트된 위치를 가져오는 예제는 아래와 같다.

String[] externalArray;
String secondaryStorage = System.getenv("SECONDARY_STORAGE");
if (secondaryStorage != null) {
   externalArray = secondaryStorage.split(":");
} else {
   externalArray = new String[0];
}

이 예제로, SECONDARY_STORAGE는 콜론(:)을 딜리미터로 여러 개의 SD CARD 마운트 위치를 알려준다는 것을 알 수 있다. 이 예제는 안드로이드 프레임웍의 MediaStore 클래스에서 확인할 수 있는 코드이다. 즉, 제조사는 안드로이드 기기에 SECONDARY_STORAGE 속성을 사용해서 추가 SD CARD를 마운트해야 MediaStore가 제 역할을 한다는 것을 알 수 있다.

위 코드는 아래의 소스에서 확인할 수 있다.

https://github.com/android/platform_frameworks_base/blob/kitkat-release/core/java/android/provider/MediaStore.java

https://github.com/android/platform_frameworks_base/blob/lollipop-release/core/java/android/provider/MediaStore.java

https://github.com/android/platform_frameworks_base/blob/marshmallow-release/core/java/android/provider/MediaStore.java

하지만, 위에서 살펴본 예제는 젤리빈(JB)에서는 찾을 수 없다. 따라서, 위 코드는 킷캣 이후의 버전에서만 제대로 동작하리라는 것을 심증적으로나마 알 수 있다.

휴, 안드로이드 파편화 감당은 쉽지 않다.

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.