"system/etc/vold.fstab" 只是一个简单的配置文件,它描述了Android的挂载点信息。
我们可以遍历这个文件来获取所有的挂载点:
- /** * 遍历 "system/etc/vold.fstab" 文件,获取全部的Android的挂载点信息
- * * @return
- */ private static ArrayList<String> getDevMountList() {
- String[] toSearch = FileUtils.readFile("/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;
- }
之后,当 Environment.getExternalStorageState()返回"removed"的时候(即,当没有挂载外置SD卡的时候),通过getDevMountList()方法获取一个list,这个list中可以进行写操作的那个就是系统自带的eMMC存储目录了。
判断逻辑:
- /** * 获取扩展SD卡存储目录
- * * 如果有外接的SD卡,并且已挂载,则返回这个外置SD卡目录
- * 否则:返回内置SD卡目录 *
- * @return */
- public static String getExternalSdCardPath() { if (SDCardUtils.isMounted()) {










