获取Android系统所有内置SD卡以及外置SD卡路径

目前越来越多的手机都支持内置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;
    }

你可能感兴趣的:(获取Android系统所有内置SD卡以及外置SD卡路径)