메모

USB 장치의 경로를 받아오자

 

최근 안드로이드 개발을 시작했는데 앱에서 USB 메모리에 있는 파일을 읽을 일이 생겼다.
마운트 되는 폴더의 이름은 USB 장치마다 다르니까 /storage 를 뒤져서 emulated, self가 아니면 나머지 하나를 골라 접근하려 했음

권한이 없어서 /storage 내용을 알 수 없음. 게같음. 경로만 알아내면 되는건데 그게 안돼.

var usbPath = ""
for (dir in applicationContext().getExternalFilesDirs(null)) {
    if (dir != null) {
        val path = dir.absolutePath
        if (!(path.contains("/storage/emulated/") || path.contains("/dev/null/"))) {
            val appPath = "Android/data/" + applicationContext().packageName + "/files"
            usbPath = path.replace(appPath, "")
        }
    }
}
return usbPath

꼼수를 전수받았다.

getExternalFilesDirs를 쓰면 접근 가능한 경로(?)가 들어온다 거기서 emulated, null 이딴건 버리면 마운트된 USB 장치의 경로 + 블라블라가 나옴.
replace로 블라블라를 지워주면 USB 장치의 경로를 알 수 있다.

돌면 된다. 문제가 생기면 그때 다시 보고 ㅋㅋㅋㅋ