我在开发 word 文档查看器 遇到了些问题 需要扫描内存卡
但是必须让用户选择手机内存和SD卡
现在的手机Environment.getExternalStorageDirectory().getPath()获取的路径成了获取手机内存的了,不得以 只好翻遍各种博客 各种百度 最后自己看着别人的 结合了下 写了个获取外置内存卡的方法:代码如下:
/**
* 获取外置内存卡的方法
*
* @return 没有 返回null
*/
public static String getSDPath() {
List<String> SdcardList = new ArrayList<String>();
String mobeiPath = Environment.getExternalStorageDirectory().getPath();
// 得到路径
try {
Runtime runtime = Runtime.getRuntime();
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) {
//过滤分区
if (line.contains("media")||line.contains("asec")||line.contains("system") || line.contains("cache")
|| line.contains("sys") || line.contains("data")
|| line.contains("tmpfs") || line.contains("root")
|| line.contains("shell") || line.contains("acct")
|| line.contains("proc") || line.contains("misc")
|| line.contains("obb")||line.contains("secure")) {
continue;
}
//内存
if (line.contains("fat") || line.contains("fuse")
|| (line.contains("ntfs"))) {
String columns[] = line.split(" ");
if (columns != null && columns.length > 1) {
String path = columns[1];
if (path != null && !SdcardList.contains(path)
&& path.contains("sd"))
SdcardList.add(columns[1]);
}
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (!SdcardList.contains(mobeiPath)) {
SdcardList.add(mobeiPath);
}
if (SdcardList.size() == 2) {
for (String path : SdcardList) {
if (path != null && !path.equals(mobeiPath)) {
return path;
}
}
return null;
} else {
return null;
}
}
获取手机内存 :
/**
* 获取内置SD卡路径
*
* @return
*/
public static String getInnerSDCardPath() {
return Environment.getDataDirectory().getPath();
}
判断外置内存是否存在:
private static boolean isScard(String dir) {
if (dir == null)
return false;
File directory = new File(dir);
if (!directory.isDirectory()) {
if (!directory.mkdirs()) {
return false;
}
}
File f = new File(directory, ".asd");
try {
if (f.exists()) {
f.delete();
}
if (!f.createNewFile()) {
return false;
}
f.delete();
return true;
} catch (Exception e) {
}
return false;
}
参考 http://blog.sina.com.cn/s/blog_5da93c8f0102vcam.html
http://m.blog.csdn.net/blog/u011305137/12619083