Android判断是否挂载外置sd卡
2016-04-13 22:34
489 查看
最近程序中需要查看sd卡是否挂载,在网上看到有用Environment.MEDIA_MOUNTED来判断是否有sd卡,但实际上Environment.getExternalStorageState()得到的手机内置sd卡的状态。这里有一种方法查看外置sd卡,使用StorageVolume类,这里需要通过反射实现。StorageManager调用getVolumeList方法返回StorageVolume对象StorageVolume对象保存着卷信息,StorageVolume的isRemovable判断是否可以卸载,如果可以卸载则是sd卡。代码如下:
private boolean isSDMounted() { boolean isMounted = false; StorageManager sm = (StorageManager) getSystemService(Context.STORAGE_SERVICE); try { Method getVolumList = StorageManager.class.getMethod("getVolumeList", null); getVolumList.setAccessible(true); Object[] results = (Object[])getVolumList.invoke(sm, null); if (results != null) { for (Object result : results) { Method mRemoveable = result.getClass().getMethod("isRemovable", null); Boolean isRemovable = (Boolean) mRemoveable.invoke(result, null); if (isRemovable) { Method getPath = result.getClass().getMethod("getPath", null); String path = (String) mRemoveable.invoke(result, null); Method getState = sm.getClass().getMethod("getVolumeState", String.class); String state = (String)getState.invoke(sm, path); if (state.equals(Environment.MEDIA_MOUNTED)) { isMounted = true; break; } } } } } catch (NoSuchMethodException e){ e.printStackTrace(); } catch (IllegalAccessException e){ e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } return isMounted; }
相关文章推荐
- android-service(要点)
- Android6.0状态栏图标原生反色操作
- Android屏蔽Home按键
- Android自学之百度地图API使用遇到的一些问题
- Android For JNI(一)——JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序,使用C启动JAVA程序
- Android For JNI(一)——JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序,使用C启动JAVA程序
- Android 自定义View (一)
- Android项目中常用的工具类集(史上最全整理)
- Android项目开发总结(一)-- 分包篇
- Android - 传统蓝牙(蓝牙2.0)
- 使用XML生成菜单
- Android快速开发系列 10个常用工具类
- Android Dalvik虚拟机
- Android Studio获取SHA1值
- [android] 手机卫士保存安全号码
- AS插件-Android Layout ID Converter
- Android java层音频相关的分析与理解(四)音频外设相关
- android之fragment活动栈单例
- Android SDK,ADT,以及API的理解
- [Android开发教程]Android官网developer training中文版教程 - 1.1.1 创建一个Android项目