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