身份证阅读器Android开机后无法识别及USB弹窗请求权限问题解决方案
有部分安卓主板商主板没有给USB权限或者没有延时供电,会导致身份证阅读器在Android系统开机后无法识别,需要重新拔插才能使用、USB弹窗请求访问USB设备,以及device.getInterfaceCount() 为0的问题。
注意:以上问题仅限USB接口读卡器会出现,串口设备(TTL和RS232)不会有这种问题。
可以按以下修改步骤,要求安卓主板提供商最源码做修改:
步骤一:
修改:frameworks\base\packages\SystemUI\src\com\android\systemui\usb\UsbPermissionActivity.java
注释:
//setupAlert();
添加
mPermissionGranted = true;
finish();
步骤二:
修改:frameworks/base/services/usb/java/com/android/server/usb/UsbSettingsManager.java
public boolean hasPermission(UsbDevice device) {
synchronized (mLock) {
return true;
}
}
public boolean hasPermission(UsbAccessory accessory) {
synchronized (mLock) {
return true;
}
}
步骤三:
修改:rameworks/base/services/usb/java/com/android/server/usb/UsbHostManager.java
endUsbDeviceAdded()方法加入以下代码
mNewDevice = null;
mNewConfigurations = null;
mNewInterfaces = null;
mNewEndpoints = null;
mNewConfiguration = null;
mNewInterface = null;
按以上1-3步骤修改安卓主板底层源码,就不会出现开机后无法识别、USB弹窗请求权限,以及device.getInterfaceCount() 为0的问题。