欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Android获取手机中外置内存卡、内置内存卡、手机内存路径,android外置,获取手机中外置内存卡、内

来源: javaer 分享于  点击 19846 次 点评:198

Android获取手机中外置内存卡、内置内存卡、手机内存路径,android外置,获取手机中外置内存卡、内


获取手机中外置内存卡、内置内存卡、手机内存路径。思路是:先用Environment.getExternalStorageDirectory()获得外部存储卡路径(某些机型也表现为内部存储卡路径),如没有获取到有效sd卡插入,则使用安卓的配置文件system/etc/vold.fstab读取全部挂载信息,假如也没有可写入的sd卡,则使用getFilesDir()方式获得当前应用所在存储路径。为适应不同手机的内存情况,先分三种情况获得可存储路径phonePicsPath,后面代码较长是因为有两个工具类,复制即可,代码如下:

//首先判断是否有外部存储卡,如没有判断是否有内部存储卡,如没有,继续读取应用程序所在存储        if(getExternalSdCardPath() != null){            phonePicsPath = getExternalSdCardPath();        }else{            phonePicsPath = getFilesDir().getAbsolutePath();        }
/**     * 遍历 "system/etc/vold.fstab” 文件,获取全部的Android的挂载点信息     *      * @return     */    private static ArrayList<String> getDevMountList() {        String[] toSearch = FileUtils.readFile("/system/etc/vold.fstab").split(" ");        ArrayList<String> out = new ArrayList<String>();        for (int i = 0; i < toSearch.length; i++) {            if (toSearch[i].contains("dev_mount")) {                if (new File(toSearch[i + 2]).exists()) {                    out.add(toSearch[i + 2]);                }            }        }        return out;    }/**     * 获取扩展SD卡存储目录     *      * 如果有外接的SD卡,并且已挂载,则返回这个外置SD卡目录     * 否则:返回内置SD卡目录     *      * @return     */    public static String getExternalSdCardPath() {        if (SDCardUtils.isMounted()) {            File sdCardFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath());            return sdCardFile.getAbsolutePath();        }        String path = null;        File sdCardFile = null;        ArrayList<String> devMountList = getDevMountList();        for (String devMount : devMountList) {            File file = new File(devMount);            if (file.isDirectory() &amp;&amp; file.canWrite()) {                path = file.getAbsolutePath();                String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmmss").format(new Date());                File testWritable = new File(path, "test_" + timeStamp);                if (testWritable.mkdirs()) {                    testWritable.delete();                } else {                    path = null;                }            }        }        if (path != null) {            sdCardFile = new File(path);            return sdCardFile.getAbsolutePath();        }        return null;    }

FileUtils文件:

None

StringUtils文件

None
相关栏目:

用户点评