Android获取外部存储设备路径

StorageManager类中,以下三个接口都被标注为@hide:

getVolumePaths()
返回全部存储卡路径, 包括已挂载的和未挂载的.
即: 有外置存储卡卡槽的机器,即使未插入外置存储卡,其路径也会被这个接口列出.
要判断某个挂载点的状态,可以用第三个接口.

getVolumeList()
返回全部 StorageVolume 类的数组,这个类也是 @hide 的.
该类提供了更详细的关于每个挂载点的信息

getVolumeState(String mountPoint)
返回某个挂载点代表的存储卡的状态. 即 Environment 中的几个常量(未全部列出):

获取所有路径getVolumePaths() 通过反射机制获取具体挂载信息

 protected void openDocumentTree() {
        //super.openDocumentTree();
        final StorageManager sm = (StorageManager) this.getSystemService(Context.STORAGE_SERVICE);
        String[] volumePaths = new String[0];
        try {
            final Method method = sm.getClass().getMethod("getVolumePaths");
            if(null != method) {
                method.setAccessible(true);
                volumePaths = (String[]) method.invoke(sm);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
}

volumePaths[i]即为外部设备路径 loadFileByPath加载内部数据即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容