Android定制:去掉USB权限弹窗
来源:互联网 发布:win10怎么连网络打印机 编辑:程序博客网 时间:2024/06/08 00:51
引言
当我们在访问一个插入到Android系统的USB设备的时候往往是需要权限的,此时系统会弹出询问权限的对话框,而我们此时希望让它默认允许访问USB设备并且不希望用户看到这个对话框。
源码:非官方Android5.1源码
描述
我们在获取UsbManager和UsbDevice/UsbAcessory之后,首先需要检查是否对这个USB设备/附件有操作的权限,如果没有权限,则需要向系统申请(系统会弹出询问权限的对话框),此时需要注册一个广播接收器用来接收用户的选择。
// 检查是否有操作权限boolean hasPermission = mUsbManager.hasPermission(mUsbDevice);if (!hasPermission) { // 注册广播,接收用户权限选择 PendingIntent pi = PendingIntent.getBroadcast(mContext, 0, new Intent(TAG_UsbPermission), 0); mContext.registerReceiver(new MyPermissionReceiver(), new IntentFilter(TAG_UsbPermission)); // 弹出对话框,申请权限 mUsbManager.requestPermission(mUsbDevice, pi);}
下面是我们定义的广播接收器:
// 定义的广播接收器private class MyPermissionReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(TAG_UsbPermission)) { boolean granted = intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false); if (!granted) { // Todo:已经获取权限,可以执行其他操作 } else { // Todo:未获取权限。 } } }}
在这个过程中,系统会弹出询问权限的对话框,而我们现在不希望用户看到这个界面。
方法
进入系统源码,找到文件
/frameworks/base/packages/SystemUI/src/com/android/systemui/usb/UsbPermissionActivity.java
找到其中的 onCreate() 方法,替换
setupAlert();
为
mPermissionGranted = true; finish();
这样就不会弹窗了,并且会允许给设备操作权限。
当然我们也可以指定只有我们自己的APP不需要弹窗,只需要加一层过滤条件即可:
// add permission for our packages! if(mPackageName.startsWith("com.xxx.xxx")) { mPermissionGranted = true; finish(); } else { setupAlert(); }
当然也可以根据设备的VID、PID、设备名称等信息进行过滤(省略)。
后记
解决方法源于源码 UsbPermissionActivity.java 中的 onClick() 方法:
public void onClick(DialogInterface dialog, int which) { if (which == AlertDialog.BUTTON_POSITIVE) { mPermissionGranted = true; } finish();}
网上还有一种使用AIDL实现Android隐藏接口的办法,此方法也需要编译源码且比较复杂故而忽略。
阅读全文
0 0
- Android定制:去掉USB权限弹窗
- Android 屏蔽USB权限弹框
- Android usb 无访问权限
- Android定制权限重名引起的问题
- Android USB通信弹出权限确认框
- Linux配置Android设备USB访问权限
- Android 移植定制之Ubuntu上识别USB设备
- USB权限
- 解决绕过android下apk使用usb设备权限查询相应问题,自动获取usb权限
- 解决绕过android下apk使用usb设备权限查询相应问题,自动获取usb权限
- 解决绕过android下apk使用usb设备权限查询相应问题,自动获取usb权限
- 解决绕过android下apk使用usb设备权限查询相应问题,自动获取usb权限
- 解决绕过android下apk使用usb设备权限查询相应问题,自动获取usb权限
- 第一篇、Android Supersu 权限管理定制,隐藏过滤权限,指定APP最高权限
- WinCE桌面定制:去掉任务栏
- Selinux 权限策略定制
- 修改Android设备中USB设备的默认权限
- WinCE系统USB功能定制
- 数据结构之数组
- qudoj Xor 思维
- Android 开发 Tip 15 -- can be replaced by one <TextView/> and a compound drawable
- GOLANG使用嵌入结构实现接口
- c++实验6-项目3
- Android定制:去掉USB权限弹窗
- 【html】在消息按钮上增加数量角标
- Android动画(三)之属性动画(Property Animation)
- Pytorch入门——概述
- thinkpad S3笔记本无线网速慢的解决方案
- Why-How-What黄金圈法则 的理解和运用
- 5月17日云栖精选夜读:大数据浪潮下_前端工程师眼中的完整数据链图
- 2017年5月面试总结
- 怎样用Java写一个简单的计算器?