前言:

最近工作上遇到几个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 权限的两种方法相关推荐

  1. 计算机用户没有管理员权限,教你让win7系统电脑普通账户拥有管理员权限的两种方法...

    在ghost win7系统电脑中如果没有管理员权限,是没办法打开一些程序.文件的,甚至删除一些文件也要有管理器权限,不然就会提示"您的权限不足,请点击继续来获得权限."那么怎么让一 ...

  2. root android oppo,OPPO R9S怎么ROOT oppor9s获取root权限的两种方法

    OPPO R9S如何ROOT呢?作为一款最新的OPPO系列智能手机,对于刚入手的用户而言,可能不知该如何获取OPPO R9S手机ROOT权限.下面就与大家分享一下获取OPPO R9S手机ROOT权限的 ...

  3. windows系统中,在当前目录下打开cmd命令行的两种方法

    windows系统中,在当前目录下打开cmd命令行的两种方法 1.在当前路径地址栏中直接输入'cmd',然后回车. 2.在当前路径下,按住'shift'键同时点击鼠标右键,点击"在此处打开P ...

  4. centos设置mysql初始l密码_centos7下mysql初始密码修改的两种方法

    centos7下mysql初始密码修改的两种方法 centos7安装mysql时会得到一个系统给的初始密码,因此我们无法直接登录mysql,需要先对其进行修改 wget http://repo.mys ...

  5. 计算机桌面变成立体,win7系统将桌面变成立体桌面的两种方法介绍

    相信大家都听说过立体桌面,其实立体桌面也叫做3D桌面, win7旗舰版 自带的桌面效果各个界面堆叠在一起的效果,桌面看起来像一个房间,桌面上的东西都可以任意的挂在墙上.一些追求个性化用户觉得系统默认的 ...

  6. 计算机桌面变成立体,win7系统将桌面变成立体桌面的两种方法

    相信大家都听说过立体桌面,其实立体桌面也叫做3D桌面,win7旗舰版自带的桌面效果各个界面堆叠在一起的效果,桌面看起来像一个房间,桌面上的东西都可以任意的挂在墙上.一些追求个性化用户觉得系统默认的桌面 ...

  7. python 获取csv的列数_Python读取excel的两种方法

    excel是什么 Microsoft Excel是一个使用非常广泛的电子表格程序.它的用户友好性和吸引人的功能使其成为数据科学中常用的工具.对于excel来说,整个excel文件称为工作簿,工作簿中的 ...

  8. jquery 乱码 传参_jquery获取URL中参数解决中文乱码问题的两种方法

    从A页面通过url传参到B页面时,解析url参数可以用下面两种方法: 方法一:正则分析法 function getQueryString(name) { var reg = new RegExp(&q ...

  9. 关闭自动降频 linux,在Deepin系统下CPU不能自主降频的两种解决方法

    如果你在Deepin系统下遇到CPU不能自主降频的问题,可用以下两种方法来解决.因为测试了一下针对笔记本装Deepin系统有时候遇到不能自主降频的问题,导致温度过高,结果用解决方法一处理好了.相关参考 ...

最新文章

  1. python【蓝桥杯vip练习题库】ALGO-79删除数组零元素
  2. HDLBits答案(22)_基于有限状态机的计数器
  3. android xml事件,安卓事件
  4. C语言实训作业PPT,C语言实训作业.docx
  5. Microsoft Data Access Components(MDAC) 结构以及一些连接SQL数据库的架构基础
  6. 有人用语音识别写作吗,如果没有,为什么?
  7. Folder and jar
  8. Dubbo负载均衡算法初步解析
  9. JEP JAVA 初体验
  10. 基于 attention 机制的 LSTM 神经网络 超短期负荷预测方法学习记录
  11. win10企业版2016长期服务版 无法远程桌面
  12. shape用法的详细举例
  13. rows between unbounded preceding and current row等,unbounded ,preceding ,following,current row含义详解
  14. 游戏服务端框架之配置与玩家数据库设计
  15. Jupyter 安装与应用
  16. 31:几何算法--点集的凸包
  17. wacom怎么调压感_怎样在ps里用手绘板画出有压感的效果
  18. 《python数据分析与挖掘》-步骤
  19. Day 1.《鸟哥的linux私房菜》
  20. C语言入门(21)——使用DBG对C语言进行调试

热门文章

  1. React Native 开发豆瓣评分(五)屏幕适配方案
  2. 洛谷 P1164:小A点菜(DP/DFS)
  3. Fildder之Mac安装
  4. 跟锦数学2017年01月
  5. Block作为参数时的使用
  6. !DOCTYPE标签的定义与用法
  7. [转载] python通过反射执行代码
  8. [转载] 【学习Python】Python查看帮助---help函数
  9. Xilinx FPGA用户原语介绍
  10. 使用ViewPager + Fragment实现微信底部Tab效果