Android各种机型,各种系统版本,如何获取外置SDCard路径

来源:互联网 发布:淘宝仓库招聘 编辑:程序博客网 时间:2024/05/17 02:09

由于项目需要,在有外置sdcard的情况下,可能不希望直接将应用内数据存入内置sdcard,我于是专门写了一个函数来获取sdcard路径

如果有外置sdcard就获取外置sdcard,如果没有就用系统默认的"外置sdcard"(深入研究可能知道,这个外置sdcard实际是从内置sdcard里面分出来的一个分区而已)

下面直接上代码:

public static String getSDCardPath(){String cmd = "cat /proc/mounts";        Runtime run = Runtime.getRuntime();        BufferedInputStream in=null;        BufferedReader inBr=null;        try {            Process p = run.exec(cmd);            in = new BufferedInputStream(p.getInputStream());            inBr = new BufferedReader(new InputStreamReader(in));            String lineStr;            while ((lineStr = inBr.readLine()) != null) {            Log.i("CommonUitls", lineStr);                if (lineStr.toLowerCase().contains("sdcard".toLowerCase())                        && lineStr.contains(".android_secure")) {                    String[] strArray = lineStr.split(" ");                    if (strArray != null && strArray.length >= 5) {                        String result = strArray[1].replace("/.android_secure",                                "");                        Log.i("CommonUitls", result);                        return result;                    }                }                if(lineStr.toLowerCase().contains("extsd".toLowerCase())){                String[] strArray = lineStr.split(" ");                Log.i("CommonUitls", strArray[1]);                return strArray[1];                }                if (p.waitFor() != 0 && p.exitValue() == 1) {                Log.e("CommonUitls", "CMD cat /proc/mounts ERROR!");                }            }        } catch (Exception e) {        e.printStackTrace();        Log.e("CommonUitls", e.toString());        }finally{            try {            if(in!=null){               in.close();            }            } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();            Log.e("CommonUitls", e.toString());            }    try {        if(inBr!=null){        inBr.close();         }} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();Log.e("CommonUitls", e.toString());}    }        return Environment.getExternalStorageDirectory().getPath();}


0 0
原创粉丝点击