您的位置:首页 > 移动开发 > Android开发

Android获取sd卡路径

2015-06-24 18:00 441 查看
Android中包括两个sd卡路径,一个是内置sd卡路径,一个是外置sd卡路径。由于Android手机系统的可定制性,每个厂商出厂的手机系统存在差异。获取到的sd卡路径也存在差异。所有的手机都支持内置sd卡,但是并不都支持外置sd卡。

内置sd路径

String sdCardPath = Environment.getExternalStorageDirectory().getAbsolutePath();


外置sd卡路径

/**
* 获取外置SD卡路径
* @return  路径列表
*/
public static List<String> getAllExtraSdcardPath() {
List<String> sdList = new ArrayList<String>();
try {
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("mount");
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
String line;
BufferedReader br = new BufferedReader(isr);
while ((line = br.readLine()) != null) {
// 将常见的linux分区过滤掉
if (line.contains("secure") || line.contains("asec")
|| line.contains("system")
|| line.contains("cache") || line.contains("sys")
|| line.contains("data") || line.contains("tmpfs")
|| line.contains("shell") || line.contains("root")
|| line.contains("acct") || line.contains("proc")
|| line.contains("misc") || line.contains("obb")) {
continue;
}
if (line.contains("fat") || line.contains("fuse")
|| line.contains("ntfs") || line.contains("extSdCard")) {
String columns[] = line.split(" ");
if (columns != null && columns.length > 1) {
String path = columns[1];
if (path != null && !sdList.contains(path)
&& path.toLowerCase().contains("sd"))
File file = new File(path);
if (file.isDirectory()){//判断是否是文件夹
sdList.add(columns[1]);
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return sdList;
}


测试结果

该程序目前只在华为 GEM-703L和三星note3上测试过,测试结果为:

华为

内置:/storage/emulated/0
外置:/storage/sdcard1


三星

内置:/storage/emulated/0
外置:/storage/extSdCard


因为目前手头上只有这两个支持外置sd卡,其他型号手机没法测试。后续有机会测试的话,再更新。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: