问题:
最近在项目开发的过程中android设备需要外接USB扫码器,神奇的就是在插拔USB扫码器的时候应用都会自动闪退,查看日志(如下图),并没有发现crash的相关异常呀,同时在接入U盘使用的时候也是正常的·····
分析:
将项目相关的USB监听都屏蔽后还是无法避免应用在外接USB扫码器出现的闪退情况,后来经过同时提醒,是需要在AndroidManifest.xml中对activity进行配置android:configChanges,configChanges属性的取值有如下几种
VALUE | DESCRIPTION |
mcc | 国际移动用户识别码所属国家代号是改变了,sim被侦测到了,去更新mcc MCC是移动用户所属国家代号 |
mnc | 国际移动用户识别码的移动网号码是改变了, sim被侦测到了,去更新mnc MNC是移动网号码,最多由两位数字组成,用于识别移动用户所归属的移动通信网 |
locale | 用户所在区域发生变化,一般是用户切换了语言时,切换后的语言会显示出来 |
touchscreen | 触摸屏是改变了------通常是不会发生的 |
keyboard | 键盘发生了改变----例如用户用了外部的键盘 |
keyboardHidden | 键盘的可用性发生了改变 |
navigation | 导航发生了变化-----通常也不会发生 |
screenLayout | 屏幕的显示发生了变化------不同的显示被激活 |
fontScale | 字体比例发生了变化----选择了不同的全局字体 |
uiMode | 用户的模式发生了变化 |
orientation | 屏幕方向改变了---横竖屏切换 |
screenSize | 屏幕大小改变了 |
smallestScreenSize | 屏幕的物理大小改变了,如:连接到一个外部的屏幕上 |
解决方案:
1、针对接入USB扫码器的时候需要配置
android:configChanges="keyboard"