最近在开发Android
时遇到插U
盘获取U
盘内容的需求,但是按照传统的Environment.getExternalStorageDirectory()
只能读取到插入的SD
卡的路径,如果是U
盘的话无法读出U盘的路径。
最终在一个在CSDN
的论坛里找到相关的东西,就试了下直接通过StorageManager
获取存储路径的。
核心如下,volumePaths
的数组就是系统外接设备的路径,经过测试的确是挂载的路径。不过有些是不可用的,它只是列出了系统可支持的外接路径。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
final StorageManager sm = (StorageManager) context.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(); } if ((volumePaths != null) && (volumePaths.length > 0)){ for (String sdcardPath : volumePaths){ Log.d(TAG,"sdcardPath:" + sdcardPath); } } |