在Android应用中,我需要特定的USB设备(已知的供应商/产品ID)的许可,该设备已永久插入Android设备。
到目前为止,我已经进行了以下观察:
是否可以确保权限弹出窗口仅显示一次? (尤其是在重新启动Android设备并且USB设备保持插入状态的情况下)
注意:该应用程序未安装在系统文件夹中,因此无法使用MANAGE_USB权限。
答案 0 :(得分:2)
如果设备已植根,则解决方案是:
使用以下代码在重新启动或启动应用程序时模拟USB设备的重新插入:
static void replugUsb() {
Log.d(LOG_TAG, "replugUsb()");
try{
Process su = Runtime.getRuntime().exec("su");
DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());
outputStream.writeBytes("echo 0 > /sys/bus/usb/devices/usb1/authorized\n");
outputStream.flush();
outputStream.writeBytes("echo 1 > /sys/bus/usb/devices/usb1/authorized\n");
outputStream.flush();
outputStream.writeBytes("exit\n");
outputStream.flush();
su.waitFor();
}catch(IOException | InterruptedException e){
Log.e(LOG_TAG, "replugUsb: failed", e);
}
}
如果设备未植根,则找不到任何解决方案。
答案 1 :(得分:0)
无法保留USB权限, ,因为重新启动选项通常会强制停止所有操作,因此也会拔掉USB。
有一种可能要求重启时重新插入USB。
是否可以确保仅弹出一次权限弹出窗口? 否
因为如果您要连接USB,这会导致死锁,以至于造成它们被拔出,而不是打扰系统。
因此无法将其插入USB。