我想在工业中使用android,
我可以使用slickdevlabs.com库连接到Profilic和Ftdi USB转串口芯片,没有任何问题.
应用程序有一个服务,它在启动时启动,连接到USB串口并执行其他操作.
我的问题是主机设备没有与用户进行任何交互,
所以当android问
Allow the app "MyAPP" to access the USB device ?
[checkmark]Use by default for this USB device
Cancel OK
Run Code Online (Sandbox Code Playgroud)
没有人点击确定.
即使我默认检查使用...复选框,如果我重新插入USB,或重新启动主机设备,它会在下次启动时再次询问.
我使用SuperUser模式运行服务和应用程序,但没有区别,它再次询问.
我添加了意图过滤但没有区别,它每次都会问我.
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
<action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
</intent-filter>
<meta-data
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />
<meta-data
android:name="android.hardware.usb.action.USB_DEVICE_DETACHED"
android:resource="@xml/device_filter" />
Run Code Online (Sandbox Code Playgroud)
任何意见如何绕过或禁用它?
我有root和SU访问权限.
甲设备所有者可以授予运行时权限使用给第三方应用DevicePolicyManager.setPermissionGrantState() ,以避免用户提示。
但是,设备所有者也可以通过任何方式授予USB权限,以使该应用无需用户提示即可访问插入的USB设备吗?
我也尝试调用UsbManager.grantPermission()(反射),但是它引发了一个,SecurityException因为它需要MANAGE_USB仅授予系统应用程序(显然不授予设备所有者)的权限。
注意:我正在寻找在非root用户和非自定义Android系统上运行的解决方案,设备所有者应用是使用Android Enterprise设置方法设置的。
android android-usb android-enterprise android-management-api