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加载内部数据即可