android 获取外部存储设备路径

来源:互联网 发布:华为荣耀4a手机壳淘宝 编辑:程序博客网 时间:2024/05/30 04:30

通常的获取sdcard的路径,我们会用Environment.getExternalStorageDirectory(),但是当我们的设备有多个外部存储设备,Environment就显得捉襟见肘了。那么有什么方法可以解决这种问题?看下面的方法,通过反射的方式获取外部存储设备的路径,完美解决 nice。

           private String[] getVolumePaths() {        String paths[] = null;        StorageManager storageManager = (StorageManager) getSystemService(Context.STORAGE_SERVICE);        try {            Clas<?>[] paramClasses = {};            Method getVolumePathsMethod = StorageManager.class.getMethod("getVolumePaths", paramClasses);            getVolumePathsMethod.setAccessible(true);            Object[] params = {};            paths = (String[]) getVolumePathsMethod.invoke(storageManager, params);        } catch (NoSuchMethodException e) {            e.printStackTrace();        } catch (IllegalArgumentException e) {            e.printStackTrace();        } catch (IllegalAccessException e) {            e.printStackTrace();        } catch (InvocationTargetException e) {            e.printStackTrace();        }        return paths;    }

我们看下通过getVolumePaths方法获取到我的Android设备上有哪些外设路径
这里写图片描述
从log中我们可以看到,我的android设备有3种外设,分别是,内置的sdcard,外置的sdcard,以及u盘。可以看到getVolumePaths方法确实要比Environment.getExternalStorageDirectory强大,对于需要获取全部外设路径的项目用此方法非常管用,特此记下。

2 0