Android libusb

无root,安卓上只能通过描述符打开设备吗,可不可以获取设备列表

参考GPT和自己的思路:在Android系统中,如果没有root权限,则无法直接访问USB设备。无法使用libusb库获取设备列表。但可以使用描述符打开设备,例如通过Android提供的USBHostManager接口来实现。通过该接口,可以获取USB设备的Device对象。但需要注意的是,这种方式只适用于已经连接的USB设备,无法扫描未连接的USB设备列表。因此,如果需要扫描未连接的USB设备列表,则需要获取root权限。

在Android系统中,LibUSB API需要root权限来使用。如果您想在没有root权限的情况下使用LibUSB,您可能需要使用USB Host API。这个API提供了访问USB设备的能力,而不需要root权限。

您可以使用USB Host API获取连接到Android设备的USB设备列表。这可以通过使用UsbManager类完成。可以使用getDeviceList()方法获取当前连接的USB设备列表。以下是一个示例代码:

UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
HashMap<String, UsbDevice> deviceList = usbManager.getDeviceList();

这将返回一个包含所有设备的HashMap,键是设备的名称,值是UsbDevice对象。您可以使用UsbDevice的方法获取有关设备的详细信息,如getDeviceId()和getDeviceName()。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 文章:Android Studio解决模拟器获取不到root权限问题 中也许有你想要的答案,请看下吧
  • 除此之外, 这篇博客: Android 免 root 抓包简易教程中的 不同版本 Android 的策略 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    对于 Android 7 及以上,可以使用配置了自定义可信的 CA 的 debug 包进行开发时的抓包,或者将用户的 CA 添加到系统 CA 目录中,但这需要 root 权限。

    对于 Android 7 以下,用户的 CA 证书可以直接被信任,直接进行抓包操作,但是某些 APP 可能不兼容较早的系统。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^