android - UsbManager.getDeviceList()为某些设备返回空

时间:2016-10-29 22:04:35

标签: android usb

我有一个Android应用程序枚举USB总线并搜索设备。 当我将disk-on-key或arduino board连接到总线时,app会设法检测并枚举连接的设备。但是当我使用HID(键盘和鼠标usb加密狗)时,该应用程序不会枚举它 - 虽然手机识别加密狗,我可以使用键盘和鼠标 在另一个USB设备(RF加密狗)上发生相同的枚举失败,但是对于它我无法判断它是否有效(可能需要调整设备固件)。

到目前为止我做的事情:  *添加到Android Manifest。  *检查Android上是否存在android.hardware.usb.host.xml    文件夹/ system / etc / permissions中的设备。

我不知道出了什么问题,因为我确实设法使用某些设备,但不能与其他设备一起使用。

感谢

1 个答案:

答案 0 :(得分:0)

HID类被UsbManager.java阻止

   /* returns true if the USB device should not be accessible by applications */
private boolean isBlackListed(int clazz, int subClass, int protocol) {
    // blacklist hubs
    if (clazz == UsbConstants.USB_CLASS_HUB) return true;
    // blacklist HID boot devices (mouse and keyboard)
    if (clazz == UsbConstants.USB_CLASS_HID &&
            subClass == UsbConstants.USB_INTERFACE_SUBCLASS_BOOT) {
        return true;
    }
    return false;
}

你提到的RF加密狗是否是RFcat?我有同样的问题,我会尝试使用Xposed来替换方法" isBlackListed"总是返回false。我试试后会通知你。