android4.4监听不到USB插拔广播的解决方法

虽然4.4系统已经是很久以前的版本了,市面上也基本上没有4.4系统的手机,平板等设备。但是有的盒子、电视机用的还是4.4的系统,为了满足客户的需求只能去适配。最近遇到一个客户4.4系统插拔USB监听不到Intent.ACTION_MEDIA_MOUNTED广播的问题。查了下资料,再加上自己的一些修改,最终解决了这个问题。

1. 新建一个xml文件,命名为:android.hardware.usb.host.xml 

   在里面添加内容:
   <?xml version="1.0" encoding="utf-8"?>
   <permissions>  
    <feature name="android.hardware.usb.host"/>  
   </permissions>
2. 将这个文件push到 /system/etc/permissions目录下
3. adb shell ,cd 到 /system/etc/permissions目录下,找到一个叫:tablet_core_hardware.xml 的文件
   把这个文件pull出来,打开编辑,在文件末尾添加一行:<feature name="android.hardware.usb.host" />
   其他内容不做任何变动

4. 编辑好后,把tablet_core_hardware.xml再push到/system/etc/permissions目录下。然后重启设备。

不同芯片平台,tablet_core_hardware.xml这个文件的名称可能不一样,根据实际情况来即可。

5. 在AndroidManifest.xml中添加权限:
   <uses-permission android:name="android.hardware.usb.host" />
   <uses-permission android:name="android.hardware.usb.accessory" />
6. 在监听usb热插拔的广播监听处,不要用UsbManager.ACTION_USB_DEVICE_ATTACHED去监听,4.4好像只能在activity中      做动态监听,在service里还不行。
    修改为监听:Intent.ACTION_MEDIA_MOUNTED

猜你喜欢

转载自blog.csdn.net/LikeSidehu/article/details/81006743