目前越来越多的手机都支持内置SD卡以及外置SD卡(包括OTG)。不少开发者就因为获取外置SD卡路径走了许多弯路,各种查找遍历,还不一定支持了所有机型。最近自己的一个小项目也碰到此问题,找了很多资料,终于找到了一个很有效的方法。目前此方法在Android5.0.2、Android6.0上测试有效。完美获取所有的SD卡路径。
/**
* 获取外置SD卡路径
*
*/
public String[] getExtSDCardPath() {
StorageManager storageManager = (StorageManager) getActivity().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);
return (String[])invoke;
} catch (NoSuchMethodException e1) {
e1.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return null;
}