JAVA获取安卓系统下usb_Android 获取 usb 权限的两种方法
前言:
最近工作上遇到几个USB模块在android平台上适配使用的情况,所以要用到USB权限获取问题
##USB权限获取有以下2种方式:
一、直接在AndroidManifest.xml文件中进行如下配置:
android:name=".DemoCustomAndroidUSBActivity"
android:label="@string/app_name">
需要注意的是:
其中 device_filter.xml 中列出了可用 usb 设备,当usb 设备连接手机之后,app 会自动询问是否允许获取该 usb 的权限。
device_filter.xml 放置位置如下图所示 :
device_filter.xml中的内容为:
usb设备通过 vendor-id(厂商 id) 和 product-id (产品 id)一起来定义的,这里有一个 linux 的 usb设备厂商 id 和产品 id 的汇总,可以作为 Android usb 设备的参考。
二、动态代码获取
2.1 代码中获取(前提是已经定位到要申请USB权限的usbdevice)
//获取USB设备ACTION
private static final String ACTION_USB_PERMISSION = "com.android.usb.USB_PERMISSION";
// 获取USB设备列表及定位到要申请权限的USB设备
// mUsbManager = (UsbManager) mContext.getSystemService(Context.USB_SERVICE);
// HashMap devices = mUsbManager.getDeviceList();
// List deviceList = new ArrayList();
// for (UsbDevice device : devices.values()) {
// if (3540==device.getVendorId() && 567==device.getProductId()) {//获取打印机设备 vid和pid
// currentDevice=device;
// }
// }
//开始申请USB权限
private void getUsbPermission(UsbDevice mUSBDevice) {
UltraLog.d("开始申请USB权限");
PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0, new Intent(ACTION_USB_PERMISSION), 0);
IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
mContext.registerReceiver(mUsbReceiver, filter);
mUsbManager.requestPermission(mUSBDevice, pendingIntent); // 该代码执行后,系统弹出一个对话框/等待权限
//以下代码是因为在系统层将弹出框直接修改掉了,可以不用
// long start = System.currentTimeMillis();
// while (!mUsbManager.hasPermission(mUSBDevice)) {
// long current = System.currentTimeMillis();
// if ((current - start) > 3500) {
// break;
// }
// try {
// Thread.sleep(50);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
// }
// }
2.2 注册广播接受者
private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
@SuppressLint("NewApi")
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (ACTION_USB_PERMISSION.equals(action)) {
synchronized (this) {
mContext.unregisterReceiver(mUsbReceiver);
UsbDevice device = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)
&& currentDevice.equals(device)) {
//TODO 授权成功,操作USB设备
}else{
//用户点击拒绝了
}
}
}
}
};
总结
以上所述是小编给大家介绍的Android 获取 usb 权限的两种方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
JAVA获取安卓系统下usb_Android 获取 usb 权限的两种方法相关推荐
- 计算机用户没有管理员权限,教你让win7系统电脑普通账户拥有管理员权限的两种方法...
在ghost win7系统电脑中如果没有管理员权限,是没办法打开一些程序.文件的,甚至删除一些文件也要有管理器权限,不然就会提示"您的权限不足,请点击继续来获得权限."那么怎么让一 ...
- root android oppo,OPPO R9S怎么ROOT oppor9s获取root权限的两种方法
OPPO R9S如何ROOT呢?作为一款最新的OPPO系列智能手机,对于刚入手的用户而言,可能不知该如何获取OPPO R9S手机ROOT权限.下面就与大家分享一下获取OPPO R9S手机ROOT权限的 ...
- windows系统中,在当前目录下打开cmd命令行的两种方法
windows系统中,在当前目录下打开cmd命令行的两种方法 1.在当前路径地址栏中直接输入'cmd',然后回车. 2.在当前路径下,按住'shift'键同时点击鼠标右键,点击"在此处打开P ...
- centos设置mysql初始l密码_centos7下mysql初始密码修改的两种方法
centos7下mysql初始密码修改的两种方法 centos7安装mysql时会得到一个系统给的初始密码,因此我们无法直接登录mysql,需要先对其进行修改 wget http://repo.mys ...
- 计算机桌面变成立体,win7系统将桌面变成立体桌面的两种方法介绍
相信大家都听说过立体桌面,其实立体桌面也叫做3D桌面, win7旗舰版 自带的桌面效果各个界面堆叠在一起的效果,桌面看起来像一个房间,桌面上的东西都可以任意的挂在墙上.一些追求个性化用户觉得系统默认的 ...
- 计算机桌面变成立体,win7系统将桌面变成立体桌面的两种方法
相信大家都听说过立体桌面,其实立体桌面也叫做3D桌面,win7旗舰版自带的桌面效果各个界面堆叠在一起的效果,桌面看起来像一个房间,桌面上的东西都可以任意的挂在墙上.一些追求个性化用户觉得系统默认的桌面 ...
- python 获取csv的列数_Python读取excel的两种方法
excel是什么 Microsoft Excel是一个使用非常广泛的电子表格程序.它的用户友好性和吸引人的功能使其成为数据科学中常用的工具.对于excel来说,整个excel文件称为工作簿,工作簿中的 ...
- jquery 乱码 传参_jquery获取URL中参数解决中文乱码问题的两种方法
从A页面通过url传参到B页面时,解析url参数可以用下面两种方法: 方法一:正则分析法 function getQueryString(name) { var reg = new RegExp(&q ...
- 关闭自动降频 linux,在Deepin系统下CPU不能自主降频的两种解决方法
如果你在Deepin系统下遇到CPU不能自主降频的问题,可用以下两种方法来解决.因为测试了一下针对笔记本装Deepin系统有时候遇到不能自主降频的问题,导致温度过高,结果用解决方法一处理好了.相关参考 ...
最新文章
- python【蓝桥杯vip练习题库】ALGO-79删除数组零元素
- HDLBits答案(22)_基于有限状态机的计数器
- android xml事件,安卓事件
- C语言实训作业PPT,C语言实训作业.docx
- Microsoft Data Access Components(MDAC) 结构以及一些连接SQL数据库的架构基础
- 有人用语音识别写作吗,如果没有,为什么?
- Folder and jar
- Dubbo负载均衡算法初步解析
- JEP JAVA 初体验
- 基于 attention 机制的 LSTM 神经网络 超短期负荷预测方法学习记录
- win10企业版2016长期服务版 无法远程桌面
- shape用法的详细举例
- rows between unbounded preceding and current row等,unbounded ,preceding ,following,current row含义详解
- 游戏服务端框架之配置与玩家数据库设计
- Jupyter 安装与应用
- 31:几何算法--点集的凸包
- wacom怎么调压感_怎样在ps里用手绘板画出有压感的效果
- 《python数据分析与挖掘》-步骤
- Day 1.《鸟哥的linux私房菜》
- C语言入门(21)——使用DBG对C语言进行调试