Android获取sd卡路径

来源:互联网 发布:淘宝星店是什么意思 编辑:程序博客网 时间:2024/05/22 13:03

Android中包括两个sd卡路径,一个是内置sd卡路径,一个是外置sd卡路径。由于Android手机系统的可定制性,每个厂商出厂的手机系统存在差异。获取到的sd卡路径也存在差异。所有的手机都支持内置sd卡,但是并不都支持外置sd卡。

内置sd路径

String sdCardPath = Environment.getExternalStorageDirectory().getAbsolutePath();

外置sd卡路径

    /**     * 获取外置SD卡路径     * @return  路径列表     */    public static List<String> getAllExtraSdcardPath() {        List<String> sdList = new ArrayList<String>();        try {            Runtime runtime = Runtime.getRuntime();            Process process = runtime.exec("mount");            InputStream is = process.getInputStream();            InputStreamReader isr = new InputStreamReader(is);            String line;            BufferedReader br = new BufferedReader(isr);            while ((line = br.readLine()) != null) {                // 将常见的linux分区过滤掉                if (line.contains("secure") || line.contains("asec")                        || line.contains("system")                        || line.contains("cache") || line.contains("sys")                        || line.contains("data") || line.contains("tmpfs")                        || line.contains("shell") || line.contains("root")                        || line.contains("acct") || line.contains("proc")                        || line.contains("misc") || line.contains("obb")) {                    continue;                }                if (line.contains("fat") || line.contains("fuse")                        || line.contains("ntfs") || line.contains("extSdCard")) {                    String columns[] = line.split(" ");                    if (columns != null && columns.length > 1) {                        String path = columns[1];                        if (path != null && !sdList.contains(path)                                && path.toLowerCase().contains("sd"))                            File file = new File(path);                            if (file.isDirectory()){//判断是否是文件夹                                sdList.add(columns[1]);                            }                    }                }            }        } catch (Exception e) {            e.printStackTrace();        }        return sdList;    }

测试结果

该程序目前只在华为 GEM-703L和三星note3上测试过,测试结果为:

华为

内置:/storage/emulated/0 外置:/storage/sdcard1

三星

内置:/storage/emulated/0 外置:/storage/extSdCard

因为目前手头上只有这两个支持外置sd卡,其他型号手机没法测试。后续有机会测试的话,再更新。

0 0