【Android笔记】android usb host模式权限问

2020-04-17  本文已影响0人  宇辰妈咪

前段时间调试一个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相关的广播。

上一篇下一篇

猜你喜欢

热点阅读