【记录】android中想办法实现自动获得usb设备的操作权限
2013 年 11 月 7 日 下午 1:57crifan已有5924人围观我来说几句
【问题】
折腾:
【已解决】android程序运行出错:UsbManager(4294): exception in UsbManager.openDevice,java.lang.SecurityException: User has not given permission to device UsbDevice
期间,希望android设备中,自动获得操作usb设备的权限。
不希望弹出对话框让用户点击,才允许有操作权限。
即,不需要用户操心usb操作权限的事情。
【折腾过程】
1.参考:
Android USB Automatically Grant Permission
无解。
2.参考:
How to stop Android asking for permission before permitting access to USB device
去看看:
USB device access pop-up supression?
但是发现:
其解释的内容,就是我之前在:
【已解决】Android设备作为Host希望实现可以检测到USB设备插入
已经知道的的那个
给xml中添加intent-filter的action和meta-data
但是其会存在问题:
静态时,即当app没运行时,插入USB,结果也会导致弹出这个对话框的。
这不是我想要的。
我要实现的是:
app没运行时,插入usb设备,不会弹出这个对话框,不用去烦用户;
app运行时,可以自动获得对应的usb设备的操作权限,无需用户操心权限的事情;
3.而看完了:
USB device access pop-up supression?
的讨论,结果是:
你妹的啊
android系统,必须,至少要有一次,(不论你是用intent-filter还是代码中调用UsbManager.requestPermission)会弹出对话框让用户选择运行程序操作此usb设备的。。
没法消除啊。。。
4.看到android官网文档:
猜想:
不知道,是否有类似的permission的配置而使得可以去配置某usb设备的权限
而实现上面的效果:
无需用户操心usb设备的权限。
5.参考:
bypass android usb host permision confirmation dialog
貌似该人即使可以实现所需的效果:
但是也需要额外的类去实现
而且还需要app是system的app,即放在/system/app/的
甚至那些类所调用的api,可能也会和当前android的os的版本有关:版本变化可能导致api变化。。。
(注:
后来看到这人:
绕过android usb主机permision确认对话框
用中文总结了上面的方案。
通过发帖时间去看,十有八九是该中文作者,拷贝了原帖的代码。。。而不是自己原创的。。。。
)
总之:
还是很麻烦的。
默认的android中,其设计的逻辑中,根本就不支持这类,绕开权限的操作。
所以:
还是放弃此想法吧。。。
【总结】
android设计的逻辑中,不支持这类绕开获取操作权限的事情;
即使像通过代码实现绕开的逻辑,也是很复杂,尤其是还有很多前提条件,所以:
暂且只能放弃绕开权限的想法了。。。