Android编程实现手机自带内部存储路径的获取方法

2019-12-10 19:53:50王旭

"system/etc/vold.fstab" 只是一个简单的配置文件,它描述了Android的挂载点信息。

我们可以遍历这个文件来获取所有的挂载点:

 

  1. /**  * 遍历 "system/etc/vold.fstab" 文件,获取全部的Android的挂载点信息 
  2. *   * @return 
  3. */  private static ArrayList<String> getDevMountList() { 
  4. String[] toSearch = FileUtils.readFile("/etc/vold.fstab").split(" ");  ArrayList<String> out = new ArrayList<String>(); 
  5. for (int i = 0; i < toSearch.length; i++) {  if (toSearch[i].contains("dev_mount")) { 
  6. if (new File(toSearch[i + 2]).exists()) {  out.add(toSearch[i + 2]); 
  7. }  } 
  8. }  return out; 

之后,当 Environment.getExternalStorageState()返回"removed"的时候(即,当没有挂载外置SD卡的时候),通过getDevMountList()方法获取一个list,这个list中可以进行写操作的那个就是系统自带的eMMC存储目录了。

判断逻辑:

 

 
  1. /**  * 获取扩展SD卡存储目录 
  2. *   * 如果有外接的SD卡,并且已挂载,则返回这个外置SD卡目录 
  3. * 否则:返回内置SD卡目录  *  
  4. * @return  */ 
  5. public static String getExternalSdCardPath() {  if (SDCardUtils.isMounted()) {