[sg] Android 6.0 判断SD卡是否挂载,获取SD卡路径,和挂载的U盘进行区分
这三个问题其实可以归为一个问题,Android 6.0的SD卡和U盘都会挂载在 /mnt/media_rw/路径下,其实问题就是如何获取挂载信息
1. 存储服务StorageManagerService 里面有一个被隐藏的方法getVolumeList()可以获取挂载设备列表
2. android.os.storage.StorageVolume 就是用来表示每个挂载设备的类,可以获取到很多挂载设备的信息,但是很多信息是隐藏的
3. 可以通过StorageVolume的getDescription()方法来区分USB和SD卡
4. 所以必须要用反射来调用有关方法
/*** 通过判断挂载路径能否移除确定外置SD卡是否存在** @param mContext* @return*/private static String getExtendedMemoryPath(Context mContext) {StorageManager mStorageManager = (StorageManager) mContext.getSystemService(Context.STORAGE_SERVICE);Class<?> storageVolumeClazz = null;try {storageVolumeClazz = Class.forName("android.os.storage.StorageVolume");Method getVolumeList = mStorageManager.getClass().getMethod("getVolumeList");Method getPath = storageVolumeClazz.getMethod("getPath");Method isRemovable = storageVolumeClazz.getMethod("isRemovable");Method getDescription = storageVolumeClazz.getMethod("getDescription", Context.class);Object result = getVolumeList.invoke(mStorageManager);final int length = Array.getLength(result);for (int i = 0; i < length; i++) {Object storageVolumeElement = Array.get(result, i);String path = (String) getPath.invoke(storageVolumeElement);boolean removable = (Boolean) isRemovable.invoke(storageVolumeElement);String descprition = (String) getDescription.invoke(storageVolumeElement, mContext);if (removable && descprition.contains("SD")) {return path;}}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}return null;}
[sg] Android 6.0 判断SD卡是否挂载,获取SD卡路径,和挂载的U盘进行区分相关推荐
- android8卡顿,Android 8.0系统曝光,解决了安卓系统卡顿的问题
原标题:Android 8.0系统曝光,解决了安卓系统卡顿的问题 8.0拟于今年5月17-19日召开的2017年谷歌I/O大会上正式宣布,之前已经曝光了该系统的一些特性,例如开发代号为奥利奥(Oero ...
- android 判断双卡手机号码,android双卡机中判断当前使用的是那张卡的数据流量
今天主要讲的是在android 5.1及以上如何判断双卡手机中判断当前的流量是使用的那张卡. (例子中的代码会使用到java反射的知识) 首先判断数据流量开关是否打开: /** * 判断数据流量开关是 ...
- Android 7.0判断栈顶Activity错误 几率显示为launcher
//Android 6.0的读取栈顶Activity的方法private String getTopActivityInfo() { ComponentName cn = null;String cl ...
- 正在升级android s7,喜欢!升级Android 8.0后,三星S7可以获取新的UI和Bixby: 功能太多...
Galaxy S7和S7 edge是三星在2016年的旗舰手机. 工厂预装了Android 6.0系统,该系统已于今年1月正式升级为Android 7.0. 按照三星为每个旗舰店更新两个主要Andro ...
- Android调用系统自带的文件管理器获取图片绝对路径
1.跳转到文件选择器进行文件选择 Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CA ...
- 安卓系统根据SIM卡槽ID获取SIM卡信息
导入一个包: import android.telephony.SubscriptionManager; 声明变量: SubscriptionManager mSubscriptionManager ...
- 关于 android 6.0 上的 nuplayer 播放时的图像卡顿
作为一个和 android nuplayer 打了 N年交道, 自以为已经上古司机的老码农, 这一次居然被坑了一个礼拜: 事情描述起来很简单, 测试人员突然发现目前的版本,播放很多视频都卡顿, 由于该 ...
- Android 7.0 高通平台-telephony-机器无Sim卡情况下,获取SIM卡状态方法getSimState偶现为6,而不是1
TelephonyManager.java -------->getSimState接口 /** * Returns a constant indicating the state of the ...
- Android 5.0+高级动画开发 矢量图动画 轨迹动画 路径变换
第1章 课程介绍 为了成就更多高逼格的人才,我专门整理了Android5.0以后主推的实现酷炫动画的新技术,教你掌握实现动画的高逼格技巧.课程中我会详细讲解每个动画效果实现的原理和所用的技术,并带你一 ...
最新文章
- c# html文本编辑器,C#实现简单文本编辑器
- 计算机算法对程序设计的作用,计算机编程中数学算法的优化策略
- win7如何打开防火墙某个端口的tcp连接
- 伪mac android,Mac,android sdk,monkey压力测试,真机
- jdk7启动时报“java.lang.VerifyError:Expecting a stackmap frame at branch target”
- 无埋点数据收集和adb monkey测试屏蔽通知栏
- kali linux超级用户_如何优雅的在Linux上使用Powershell]
- android开机动画多长时间_Android开机动画原理分析
- Python练习题(四)
- linux php服务器搭建,如何搭建linux服务器
- Lucene创建索引和搜索索引
- TIFF文件结构查看器AsTiffTagViewer ver 2.00
- 游戏《我的世界》马怎么繁殖?如何驯化?
- 星际战一直显示网络无法连接服务器,所有战网应用均无法连接到服务器,无法登陆...
- 利用python爬取京东平台评论及图片并进行分析
- LINUX 一键装机 PXE system-config-kickstart 资源 实现简单操作镜像装机
- java字符乱码问题_怎么解决java中的字符乱码问题
- Java基础编程题(02)求100-200之间的素数
- 从重视研发到建立高效的研发管理体系
- C#重写RichBox控件获取RTF格式的内容
热门文章
- IKAnalyzer2012FF_u1.jar 下载地址
- 【音频处理】Melodyne 麦乐迪软件安装 ( 安装 Melodyne 软件 | Melodyne 软件汉化 )
- p4899 [IOI2018] werewolf 狼人
- 壁纸 | 隐藏iPhone Dock栏
- Gitlab CI/CD Sonar 集成简版
- 32、长高压消防给水系统
- mapinfo的tab图层汉字乱码_如何解决MapInfo打开文字乱码的问题
- 用于《机械设计课程设计》中的减速箱设计的Python计算程序
- mysql 游戏服务器设计_网络游戏服务器数据库设计和实现.doc
- xp系统电脑拼不通服务器,XP电脑用户账户错误automation服务器不能建对象一步解决...