최근 안드로이드 개발을 시작했는데 앱에서 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 장치의 경로를 알 수 있다.
돌면 된다. 문제가 생기면 그때 다시 보고 ㅋㅋㅋㅋ