很多android 的应用在使用USB设备时,总会遇到一个很烦人的问题。
即每次都会弹出对话框:
每次插入USB设备,都会弹出。每次选上默认情况下使用该USB设备。但总还是会弹出。用户体验很差。
似乎唯一的解决方法就是直接获取Root权限,把App放入系统内置应用中,显然很多情况下是无法实现的。
机缘巧合需要写一个车载USB-GPS的解析器。其中用到USB-GPS。即每次必然弹出对话框,不胜其烦。
查了目前网上全部资料,几乎都是无解。
比如这位仁兄:http://blog.csdn.net/hubbybob1/article/details/50263925
或者这位:https://www.crifan.com/android_try_to_auto_grant_usb_device_operation_permission/
百思不得解,直接解释为无解。或者解释为android系统漏洞。查询全部国外资料,似乎也没有相关资料实现哦。
stackoverflow也是无解,https://stackoverflow.com/questions/12401027/how-can-i-suppress-the-usb-permissions-dialog
哈哈,来个自我自卖自夸。
机缘巧合下,多次尝试,终于实现点击默认即自动获得USB操作权限且不再弹出系统对话框。
废话少说,直接上代码:
第一步:声明权限。相信大家都懂:
第二步:在res中新建xml文件夹,新建device_filter.xml
声明:usb-device
其中vendor-id 以及 product-id 那么这个vendor-id和 product-id如何获取呢?
方法1:http://blog.csdn.net/u010661782/article/details/50749271
方法2:https://www.cnblogs.com/shanyou/archive/2012/11/05/2755957.html
其中product-id和vendor-id,在每款usb芯片组都是一样的。即只要USB驱动不变。那product-id和vendor-id就是通用的。
其中vendor-id = 1659 product-id= 8963 为PL2303驱动的id号。为目前最常见USB驱动。台湾产。
第三步:在application中声明该xml文件。
以上操作后。即可实现点击信任后。不再弹出系统对话框。自动获得USB操作权限。
谢谢各位。