Android 获取 usb 权限的两种方法
一、直接在AndroidManifest.xml文件中的acitivity加入以下配置:
二、动态代码获取
private static final String ACTION_USB_PERMISSION = “com.android.usb.USB_PERMISSION”;
///申请权限
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); // 该代码执行后,系统弹出一个对话框/等待权限
///广播
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{
//用户点击拒绝了
}
}
}
}
};