2

我正在创建需要USB权限的信息亭应用程序。它将作为系统应用添加到AOSP图像上,并且是设备所有者应用。如何授予USB权限,以便我的信息亭设备不要求确认对话框?

应用程序通过USB在HOST模式下控制外部设备,所以默认情况下它如何获得USB许可,以便用户在每次关闭USB设备时不需要提供USB权限。平板电脑将被关闭,因此用户无法访问它控制的USB端口和设备。

所以我希望默认情况下某些USB设备是可信的。如何实现它? 我如何绕过我的应用程序的android usb主机权限确认对话框。

可以使用this方法??

然后我发现了一些关于whitelisting设备的东西。 如果它可能是可行的解决方案,明天试试。

回答

0

我有同样的问题,在你的AndroidManifest.xml中使用该设备写入的活性本

<intent-filter> 
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> 
</intent-filter> 
<meta-data 
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" 
android:resource="@xml/device_filter" /> 

你还可以建立在XML资源筛选文件,如RES/XML/device_filter :

<?xml version="1.0" encoding="utf-8"?> 
    <resources> 
    <usb-device vendor-id="26214" product-id="26214" /> 
    </resources> 

你不能调用mManager.requestPermission(设备,mPermissionIntent),所以你必须直接调用mManager.openDevice(mDevice);并且您可以正常通信而无需显示权限弹出消息。

+0

感谢您的输入我仍然得到java.lang.SecurityException:当我尝试打开设备时,用户没有给设备UsbDevice的权限。 我是否必须将意向过滤器放在试图使用USB的特定活动下? – Juge

+0

管理获取意图过滤器的工作。问题在于,在为平板电脑供电时,它将从用户权限查询到启动应用程序。所以我仍然得到一次查询。问题是我有2个USB设备,它允许第一个。 – Juge

+0

它的开始只显示摆脱确认对话框的方法是破解AOSP框架代码。 :(至少我还没有找到任何解决方案。 https://android.googlesource.com/platform/frameworks/base/+log/e098050/services/java/com/android/server/usb – Juge

相关问题