众所周知,谷歌提供给了我们获取android内置存储卡的绝对路径的方法,但是如果要获取外置的存储的路径的话,谷歌就没有提供了。我们需要自己去写方法来获取这些路径,比如外置的tf卡,OTG挂载的U盘等。

那么采用什么方法呢,android说白了也就是一种linux系统,采用的是linux的内核。而linux中挂载存储设备使用的是 mount 命令来挂载设备到文件系统中。如:

mount -rw /dev/mmcblock0 /mnt

就是将设备存储卡以可读写的方式挂载到了/mnt目录下,此后访问/mnt就是访问存储卡的内容。又如用的最常用的挂载windows下的文件夹到linux虚拟机中(Virtual Box):

root@tony-laptop:~# mount -t vboxsf SHARE /media/sf_SHARE/

root@tony-laptop:~# mount | grep SHARE

SHARE on /media/sf_SHARE/ type vboxsf (rw)

后面敲入mount查看到F盘的SHARE目录已经被挂载到/media/sf_SHARE下,也可以查看到SHARE里的文件。安卓采用的也是这种方式,于是我们可以通过查看mount命令的输出来获取所挂载的路径是什么。下面直接上代码,代码中都有注释。

/**

* 获取手机系统中所有被挂载的TF卡,包括OTG等

*

* @return

*/

public static List getAllExterSdcardPath()

{

List SdList = new ArrayList();

String firstPath = getFirstExternPath();

try

{

Runtime runtime = Runtime.getRuntime();

// 运行mount命令,获取命令的输出,得到系统中挂载的所有目录

Process proc = runtime.exec("mount");

InputStream is = proc.getInputStream();

InputStreamReader isr = new InputStreamReader(is);

String line;

BufferedReader br = new BufferedReader(isr);

while ((line = br.readLine()) != null)

{

Log.d("", line);

// 将常见的linux分区过滤掉

if (line.contains("proc") || line.contains("tmpfs") || line.contains("media") || line.contains("asec") || line.contains("secure") || line.contains("system") || line.contains("cache")

|| line.contains("sys") || line.contains("data") || line.contains("shell") || line.contains("root") || line.contains("acct") || line.contains("misc") || line.contains("obb"))

{

continue;

}

// 下面这些分区是我们需要的

if (line.contains("fat") || line.contains("fuse") || (line.contains("ntfs")))

{

// 将mount命令获取的列表分割,items[0]为设备名,items[1]为挂载路径

String items[] = line.split(" ");

if (items != null && items.length > 1)

{

String path = items[1].toLowerCase(Locale.getDefault());

// 添加一些判断,确保是sd卡,如果是otg等挂载方式,可以具体分析并添加判断条件

if (path != null && !SdList.contains(path) && path.contains("sd"))

SdList.add(items[1]);

}

}

}

} catch (Exception e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

if (!SdList.contains(firstPath))

{

SdList.add(firstPath);

}

return SdList;

}

} 在使用过程中,可能会因为安卓手机厂家太多,ROM太多,判断条件不准确的时候,这就需要针对一些机型来添加具体的判断条件来确保能够把所需要的路径全读出来。

linux怎么挂载手机内部储存,Android获取内置、外置以及OTG等方式挂载的存储设备路径...相关推荐

  1. Android获取内置sdcard跟外置sdcard路径

    Android获取内置sdcard跟外置sdcard路径.(测试过两个手机,亲测可用) 1.先得到外置sdcard路径,这个接口是系统提供的标准接口. 2.得到上一级文件夹目录 3.得到该目录的所有文 ...

  2. android 获取sdcard 禁用sdcard,Android获取内置sdcard跟外置sdcard路径

    Android获取内置sdcard跟外置sdcard路径 Android获取内置sdcard跟外置sdcard路径.(测试过两个手机,亲测可用) 1.先得到外置sdcard路径,这个接口是系统提供的标 ...

  3. Android 获取内置和外置存储卡的路径及总共、可用空间

    在实现这个功能之前可以弄清几个获取系统路径的方法: Context.getCacheDir().getPath() ;  对应路径:/ data /user / 0 / <应用程序包>/ ...

  4. android sd卡挂载广播,Android--检测内置/外置SD卡存储卡,枚举所有挂载点(通过反射实现),监听SD卡广播...

    直接上重点: 1:获取内置SD卡的路径, 但是判断是否有效(是否挂载), 需要用到下面检测挂载点的方法 /** * 获取内置SD卡路径 * * @return */ public String get ...

  5. Android查看手机内部储存目录及数据库文件[转]

    本文转自:https://blog.csdn.net/msn465780/article/details/76813122 我们平时开发的时候会经常用到文件缓存,常用的是手机内部储存和手机外部储存,手 ...

  6. android db 代码查看工具,Android查看手机内部储存目录及数据库文件

    咱们平时开发的时候会常常用到文件缓存,经常使用的是手机内部储存和手机外部储存,手机内部存储主要包括APP安装后的一些文件,外部储存就是你们一般可使用的空间,用来存点图片电影之类的.html 当须要快速 ...

  7. roid 获取 内外存储设备路径疑问

    android 系统是开源的,于是各种产商各种瞎改android系统,工作了几个月,我发现单单就android的内外存储设备的路径我就不知道怎么获取了.上网查了几种方案,自己试验了下,感觉好迷茫啊.在 ...

  8. android 人脸识别demo,Android Camera 内置人脸识别的Demo

    CameraFace Android Camera 内置人脸识别的Demo 通过Android源生API支持的人脸识别FaceDetection,获取到脸部矩形坐标,左右眼坐标,嘴坐标通过View动态 ...

  9. 金立发布超级续航手机M6/M6 Plus,内置安全加密芯片

    7月26日,金立在北京国家会议中心举办"超级续航·芯无所惧"金立超级续航手机M6/M6 Plus上市发布会暨<手机芯战>首映礼.作为金立超级续航M系列重磅之作,金立M6 ...

最新文章

  1. python-day05正则表达式
  2. javascript——事件默认行为
  3. 你还在等着用户反馈BUG?
  4. 深入浅出 Java 微服务视频
  5. 新手入门深度学习 | 1-1:配置深度学习环境
  6. wps linux32位不兼容,WPS for Linux版问题所在_服务器评测与技术-中关村在线
  7. php文件改写nodejs,node.js – 提供PHP文件的nodejs,expressjs
  8. 干净的停止tomcat/java应用程序
  9. 《BI那点儿事》数据流转换——聚合
  10. 医疗新基建,更需新安全
  11. 【L298N 驱动电机的线路连接图】
  12. D3D中设备丢失的处理
  13. 身份证前6位数据/行政区划分代码
  14. Hadoop HA HDFS启动错误之org.apache.hadoop.ipc.Client: Retrying connect to server问题解决
  15. linux 中eth,执行命令取出linux中eth0的IP地址
  16. 打印机 针式打印机 热敏打印机
  17. noob之MySQL基本查询
  18. 工具使用:利用SRS和FFmpeg搭建流媒体直播和点播系统
  19. apmserv mysql5.1启动失败_apmserv启动失败的原因以及解决方法
  20. 数据结构视频知识点整理 1

热门文章

  1. 小熊派手册查询和ADC深入学习
  2. singress卸载_深信服在64位操作系统下的使用方法
  3. 男人一生中必玩的十个游戏
  4. 用模拟精灵写的自动投票系统
  5. 哭瞎!360云盘将关停,你的几十T照片和文件该怎么办
  6. C语言关键字之C89、C99、C11
  7. pe系统找不到固态硬盘的解决办法
  8. Nacos下载和安装-windows
  9. git更新代码后发现本地comit的代码无法push, 提示The following untracked working tree files would be overwritten by che
  10. 开源门户网站Liferay Portal