【问题标题】:android - UsbManager.getDeviceList() returns empty for some devicesandroid - UsbManager.getDeviceList() 对某些设备返回空
【发布时间】:2016-10-29 22:04:34
【问题描述】:

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

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

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

谢谢

【问题讨论】:

  • 更新:当我在 linux 终端中检查连接的 USB 设备时,使用 lsusb 命令,我设法看到我的设备已连接。所以我确信设备的固件可以正常工作。有什么想法吗?

标签: android usb


【解决方案1】:

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。我试了之后会告诉你的。

【讨论】:

    猜你喜欢
    • 2013-04-07
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 2020-05-21
    相关资源
    最近更新 更多