티스토리 뷰

모바일 프로그래밍

Android extSdCard path 얻기

두덕리온라인 2017. 1. 22. 00:15
728x90
반응형
public class ExtSdCardHelper {
    public static HashSet<String> getExternalMounts() {
        final HashSet<String> out = new HashSet<String>();
        String reg = "(?i).*vold.*(vfat|ntfs|exfat|fat32|ext3|ext4).*rw.*";
        String s = "";
        try {
            final Process process = new ProcessBuilder().command("mount")
                    .redirectErrorStream(true).start();
            process.waitFor();
            final InputStream is = process.getInputStream();
            final byte[] buffer = new byte[1024];
            while (is.read(buffer) != -1) {
                s = s + new String(buffer);
            }
            is.close();
        } catch (final Exception e) {
            e.printStackTrace();
        }
        // parse output
        final String[] lines = s.split("\n");
        for (String line : lines) {
            if (!line.toLowerCase(Locale.US).contains("asec")) {
                if (line.matches(reg)) {
                    String[] parts = line.split(" ");
                    for (String part : parts) {
                        if (part.startsWith("/"))
                            if (!part.toLowerCase(Locale.US).contains("vold"))
                                out.add(part);
                    }
                }
            }
        }
        return out;
    }
    public static String getExternalSdCardPath() {
        // 외장 SD카드 주소
        HashSet<String> mountSet = getExternalMounts();
        if(mountSet.size() == 0)
            return null;
        String extSdCard = mountSet.iterator().next();
        extSdCard = "/storage/" + extSdCard.substring(extSdCard.lastIndexOf("/")+1);
        return extSdCard;
    }
}


반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday