public class GetFilePathUtils {
public static String[] getAllSdPaths(Context mContext) {
String path1 = "";// 内部存储路径
String path2 = "";// sd卡存储路径
String path3 = "";// usb存储路径
StorageManager mStorageManager = (StorageManager) mContext.getSystemService(Context.STORAGE_SERVICE);
Class<?> storageVolumeClazz = null;
try {
storageVolumeClazz = Class.forName("android.os.storage.StorageVolume");
Method getVolumeList = mStorageManager.getClass().getMethod("getVolumeList");
Method getPath = storageVolumeClazz.getMethod("getPath");
Method isRemovable = storageVolumeClazz.getMethod("isRemovable");
Method getDescription = storageVolumeClazz.getMethod("getDescription", Context.class);
Object result = getVolumeList.invoke(mStorageManager);
final int length = Array.getLength(result);
for (int i = 0; i < length; i++) {
Object storageVolumeElement = Array.get(result, i);
String path = (String) getPath.invoke(storageVolumeElement);
String description = (String) getDescription.invoke(storageVolumeElement, mContext);
boolean removable = (Boolean) isRemovable.invoke(storageVolumeElement);
if (true == removable) {// 可拆卸设备
if (description.endsWith("USB") || description.endsWith("U 盘")||description.endsWith("USB 存储器") ) {// usb外置卡
path3 = path;
}else if(description.endsWith("SD")||description.endsWith("SD 卡")){//sd卡可判断
path2=path;
}else{//其它sd卡不可通过SD、SD卡来判断识别
path2=path;
}
} else {// 内置卡存储路径
path1 = path;
}
}
String[] pathLists = new String[] { path1, path2, path3 };
return pathLists;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return null;
}