【Android笔记】android usb host模式权限问
前段时间调试一个USB外接设备项目遇到一个问题,即打开OTG连接后,连上外接设备后,无法识别外接设备问题。后来定位代码发现是GSM测试代码合入遇到的一个坑,记录一下。需要USB外接设备时候必须保证frameworks/native/data/etc/android.hardware.usb.host.xml 文件中打开此权限。
<permissions>
<feature name="android.hardware.usb.host" />
</permissions>
打开此处修改后,测试外接设备能够正常检测到了。在涉及到USB外接设备功能时,需要保证以下:
一:必须确定Android设备支持USB Host,具体支持与否请参考自己的说明书。
二:确认Android是否已经开放了USB访问权限。
进入系统,找到目录“/system/etc/permissions”或者“/vendor/etc/permissions”,可以用ES或者RE文件管理器进行操作。查看该目录下,是否有一个文件"android.hardware.usb.host.xml",如果设备开启了root权限,可以直接用adb命令pull出来修改。
如果没有,则自己创建一个同名文件,内容如下:
<permissions>
<feature name="android.hardware.usb.host"/>
</permissions>
然后,拷贝到“/system/etc/permissions”或者“/vendor/etc/permissions”目录下。
三:继续检查目录“/system/etc/permissions”或者“/vendor/etc/permissions”下,将其中的“handheld_core_hardware.xml (手机)或者 tablet_core_hardware.xml(平板)”拖出来,打开文件,看看<permissions>结点下面有没有下面这个结点:
<feature name="android.hardware.usb.host" /> 如果没有,就自己补上一行,保存,并push进去替换原来的文件。
四:如果在应用模块中涉及到USB host功能的使用,比如需要过滤Android USB actions(ACTION_USB_DEVICE_ATTACHED & ACTION_USB_DEVICE_DETACHED)的时候首先需要保证在模块的AndroidManifest.xml配置文件中增加
<uses-feature android:name="android.hardware.usb.host" />
有了这个属性配置后,APP应用才能正常接收USB相关的广播。