Android6.0 上会根据卡的种类和卡的挂载状态来动态生成挂载路径,因此不建议大家在按照以前的方法获取外置SD卡或者usbotg的路径,建议按照以下方法来获取:
… …
StorageManagermStorageManager = StorageManager.from(context);
finalList<VolumeInfo> vols = mStorageManager.getVolumes();
VolumeInfosdcardVolume = null ;
for(VolumeInfovol : vols){
if(vol.getDisk() != null && vol.getDisk().isSd())sdcardVolume = vol;
//如果需要获取usbotg的路径,则改为
// if(vol.getDisk() != null &&vol.getDisk().isUsb()) usbotgVolume = vol;
}
if(sdcardVolume!= null) {
String sdcardPath = sdcardVolume.getPath()==null ? null :sdcardVolume.getPath().toString();
String sdcardState = sdcardVolume.getEnvironmentForState(sdcardVolume.getState());
if(sdcardState.equals(Environment.MEDIA_MOUNTED) && sdcardPath != null){
//外置SD卡已挂载,且路径有效
// sdcardPath 外置SD卡的路径
}
}