前段時間調(diào)試一個USB外接設(shè)備項目遇到一個問題傲武,即打開OTG連接后蓉驹,連上外接設(shè)備后城榛,無法識別外接設(shè)備問題。后來定位代碼發(fā)現(xiàn)是GSM測試代碼合入遇到的一個坑戒幔,記錄一下吠谢。需要USB外接設(shè)備時候必須保證frameworks/native/data/etc/android.hardware.usb.host.xml?文件中打開此權(quán)限。
<permissions>
<feature name="android.hardware.usb.host" />
</permissions>
打開此處修改后诗茎,測試外接設(shè)備能夠正常檢測到了工坊。在涉及到USB外接設(shè)備功能時,需要保證以下:
一:必須確定Android設(shè)備支持USB Host敢订,具體支持與否請參考自己的說明書王污。
二:確認Android是否已經(jīng)開放了USB訪問權(quán)限。
進入系統(tǒng)楚午,找到目錄“/system/etc/permissions”或者“/vendor/etc/permissions”昭齐,可以用ES或者RE文件管理器進行操作。查看該目錄下矾柜,是否有一個文件"android.hardware.usb.host.xml",如果設(shè)備開啟了root權(quán)限阱驾,可以直接用adb命令pull出來修改。
如果沒有怪蔑,則自己創(chuàng)建一個同名文件里覆,內(nèi)容如下:
<permissions>
? <feature name="android.hardware.usb.host"/>
</permissions>
然后,拷貝到“/system/etc/permissions”或者“/vendor/etc/permissions”目錄下缆瓣。
三:繼續(xù)檢查目錄“/system/etc/permissions”或者“/vendor/etc/permissions”下喧枷,將其中的“handheld_core_hardware.xml (手機)或者 tablet_core_hardware.xml(平板)”拖出來,打開文件弓坞,看看<permissions>結(jié)點下面有沒有下面這個結(jié)點:
<feature name="android.hardware.usb.host" /> 如果沒有隧甚,就自己補上一行,保存渡冻,并push進去替換原來的文件戚扳。
四:如果在應(yīng)用模塊中涉及到USB host功能的使用,比如需要過濾Android USB actions(ACTION_USB_DEVICE_ATTACHED & ACTION_USB_DEVICE_DETACHED)的時候首先需要保證在模塊的AndroidManifest.xml配置文件中增加
<uses-feature android:name="android.hardware.usb.host" />
有了這個屬性配置后族吻,APP應(yīng)用才能正常接收USB相關(guān)的廣播咖城。