如果您拥有设备的 root 访问权限,您可以使用我找到的一些方法。在应用程序中,您需要调用类似以下内容的内容:
String[] commandConfigValue0 = { "su", "-c", "echo 0 > /sys/bus/usb/drivers/usb/usb1/bConfigurationValue", };
String[] commandConfigValue0 = { "su", "-c", "echo 0 > /sys/bus/usb/drivers/usb/usb1/bConfigurationValue", };
String[] commandConfigValue1 = { "su", "-c", "echo 1 > /sys/bus/usb/drivers/usb/usb1/bConfigurationValue", };
String[] commandAuthorized0 = { "su", "-c", "echo 0 > /sys/bus/usb/drivers/usb/usb1/authorized", };
String[] commandAuthorized1 = { "su", "-c", "echo 1 > /sys/bus/usb/drivers/usb/usb1/authorized", };
Process p;
try {
p = Runtime.getRuntime().exec(commandAuthorized0);
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
Log.d("MainActivity", "From unbind: " + in.toString());
// I don't think "rebinding" works here but if you listen for the usb disconnect you can then call this second runtime command to bind the internal usbhub
Thread.sleep(3000);
p = Runtime.getRuntime().exec(commandAuthorized1);
in = new BufferedReader(new InputStreamReader(p.getInputStream()));
Log.d("MainActivity", "From bind: " + in.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我查看了我拥有的一些未 root 的较新设备,这些设备也具有 /sys/bus/usb/drivers/usb/usb2,并且可能存在具有 /sys/bus/usb/drivers/usb/usb3 的设备。因此,您可能需要运行多个调用,具体取决于您希望应用程序运行的设备。
如果您想在没有 root 访问权限的情况下进行操作。我仍在努力寻找解决方案!
祝你好运!