Android获取全部存储卡挂载路径
近期因项目需求。须要在存储卡查找文件,经測试发现部分手机挂载路径查找不到,这里分享一个有效的方法。
/**
* 获取全部存储卡挂载路径
* @return
*/
public static List<String> getMountPathList() {
List<String> pathList = new ArrayList<String>();
final String cmd = "cat /proc/mounts";
Runtime run = Runtime.getRuntime();//取得当前JVM的运行时环境
try {
Process p = run.exec(cmd);//运行命令
BufferedInputStream inputStream = new BufferedInputStream(p.getInputStream());
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String line;
while ((line = bufferedReader.readLine()) != null) {
// 获得命令运行后在控制台的输出信息
Logger.i(line);
//输出信息内容: /data/media /storage/emulated/0 sdcardfs rw,nosuid,nodev,relatime,uid=1023,gid=1023 0 0
String[] temp = TextUtils.split(line, " ");
//分析内容可看出第二个空格后面是路径
String result = temp[1];
File file = new File(result);
//类型为文件夹、可读、可写,就算是一条挂载路径
if (file.isDirectory() && file.canRead() && file.canWrite()) {
Logger.d("add --> "+file.getAbsolutePath());
pathList.add(result);
} // 检查命令是否运行失败
if (p.waitFor() != 0 && p.exitValue() == 1) {
// p.exitValue()==0表示正常结束。1:非正常结束
Logger.e("命令运行失败!");
}
}
bufferedReader.close();
inputStream.close();
} catch (Exception e) {
Logger.e(e.toString());
//命令运行异常,就加入默认的路径
pathList.add(Environment.getExternalStorageDirectory().getAbsolutePath());
}
return pathList;
}
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXkxMzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" width="900" height="400">
Android获取全部存储卡挂载路径的更多相关文章
- Android获取可存储文件所有路径
引言:大家在做app开发的时候,基本都会保存文件到手机,android存储文件的地方有很多,不像ios一样,只能把文件存储到当前app目录下,并且android手机由于厂家定制了rom,sdcard的 ...
- Android 获取assets的绝对路径
第一种方法: String path = "file:///android_asset/文件名"; 第二种方法: InputStream abpath = get ...
- Android获取系统外置存储卡路径的方法
android系统可通过Environment.getExternalStorageDirectory()获取存储卡的路径.可是如今有非常多手机内置有一个存储空间.同一时候还支持外置sd卡插入,这样通 ...
- android获取各种系统路径的方法
链接https://blog.csdn.net/qq_26296197/article/details/51909423 通过Environment获取的 Environment.getDataDir ...
- Android 获取SD路径,存储空间大小的方法
Android用 Environment.getExternalStorageDirectory() 方法获取 SD 卡的路径 , 卡存储空间大小及已占用空间获取方法 : /* 获取存储卡路径 */ ...
- Android获取SD卡路径及SDCard内存的方法
这篇文章主要介绍了Android获取SD卡路径及SDCard内存的方法,较为详细的分析了Android针对SD卡操作所涉及的类及其具体函数功能,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了A ...
- Android获取SD卡路径/内存的几种方法
Android获取SD卡路径 本篇将会带领大家学习如何获取android路径的几种常见用法,但在我开始bb之前需要大家清楚android中内存和外存之间的区别,下面进行简短介绍:android中的内存 ...
- Android获取内置sdcard跟外置sdcard路径
Android获取内置sdcard跟外置sdcard路径.(测试过两个手机,亲测可用) 1.先得到外置sdcard路径,这个接口是系统提供的标准接口. 2.得到上一级文件夹目录 3.得到该目录的所有文 ...
- android开发之——获取相册图片和路径
Android开发获取相册图片的方式网上有很多种,这里说一个Android4.4后的方法,因为版本越高,一些老的api就会被弃用,新的api和老的api不兼容,导致出现很多问题. 比如:managed ...
随机推荐
- spark查看stage和tasks信息
spark提供了web-ui接口.外部命令等多种方法监视spark程序的执行状态.利用spark的监视功能,可以方便的查看spark应用程序执行的状态,具体包括:1)stage和tasks列表信息 ...
- Thread stack overrun
ERROR 1436 (HY000): Thread stack overrun: 6448 bytes used of a 131072 byte stac k, and 128000 bytes ...
- Windows离线安装Python第三方库的方法
在window中,离线安装第三方模块, 1.下载第三方库的压缩文件,解压,将解压后的文件放到Python安装目录下的Lib\site_packages中 2. 将Python添加到环境变量里 3.进入 ...
- jsp学习笔记 - 内置对象 pageContext
1.pageContext几乎可以操作所有的页面内置对象 pageContext.getRequest(); 得到的对象只是属于ServletRequest类,httpServletReques ...
- ios8 UITableView设置 setSeparatorInset:UIEdgeInsetsZero不起作用的解决办法(去掉15px空白间距)
但是在ios8中,设置setSeparatorInset:UIEdgeInsetsZero 已经不起作用了.下面是解决办法: 首先在viewDidLoad方法加入以下代码: if(leftTable! ...
- java学习日志---File实例:实现复制整个文件夹、解决listFiles()为null问题
需求:将H盘下的所有文件复制到H:/All 文件夹中 思路:使用递归遍历整个目标目录 传入目标路径 判断是否是文件夹 是:调用listFiles()方法,得到File数组,重点内容接着执行1 否:复制 ...
- poj2352 Stars【树状数组】
Astronomers often examine star maps where stars are represented by points on a plane and each star h ...
- Many Equal Substrings CodeForces - 1029A (kmp next数组应用)
题目大意 题目看样例也能猜到就是输出最短的循环串. 吐槽 明明是div3第一题为啥子还会用到kmp的知识? 解法 这个题仔细看发现是求最长可去除的后缀,也就是说去除跟下一个相同的字符串还能连接起来.这 ...
- 【eclipse】外部 jar 包导入教程
JavaWeb 项目中,可以直接将要导入的 jar 程序包复制到你项目下的 WEB-INF/lib 文件夹下,将来程序移动到别的机子上测试时也能正常运行.如果是普通 Java 工程的话,我们可以在项目 ...
- buf.readUInt32BE()函数详解
buf.readUInt32BE(offset[, noAssert]) buf.readUInt32LE(offset[, noAssert]) offset {Number} 0 noAssert ...