首页 > 代码库 > 获取手机SD卡路径(国产神机多个SD卡)
获取手机SD卡路径(国产神机多个SD卡)
通过系统的
Environment.getExternalStorageDirectory().getAbsoluteFile();
只能得到系统的SD卡路径,对于对个SD卡的国产神机,想得到外部SD卡就无能为力了。
下面介绍一个编写的工具类,通过反射得到系统隐藏的得到所有挂载路径方法获取所有SD卡路径:
package com.itheima.mobilesafe.utils;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.os.storage.StorageManager;
public class ExternalMemoryUtils {/**
* 得到所有的外部存储路径,以集合的形式返回** @param context* 上下文* @return SD卡路径集合*/
public static List<String> getExternalMemoryPaths(Context context) {
List<String> list = null;
StorageManager storageManager = (StorageManager) context
.getSystemService(Context.STORAGE_SERVICE);
try {
Class<?>[] paramClasses = {};
Method getVolumePathsMethod = StorageManager.class.getMethod(
"getVolumePaths", paramClasses);// 返回所有安装卷路径列表
getVolumePathsMethod.setAccessible(true);
Object[] params = {};
Object invoke = getVolumePathsMethod.invoke(storageManager, params);
list = new ArrayList<String>();
for (int i = 0; i < ((String[]) invoke).length; i++) {
String path = ((String[]) invoke)[i];
list.add(path);
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return list;
}
}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。