定义BroadcastReceiver
private BroadcastReceiver mUsbPermissionActionReceiver;
private static final String ACTION_USB_PERMISSION = "com.template.USB_PERMISSION";//可自定义
private static UsbManager mUsbManager;
//获取USB权限
private void tryGetUsbPermission(){
mUsbPermissionActionReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (ACTION_USB_PERMISSION.equals(action)) {
context.unregisterReceiver(this);//解注册
synchronized (this) {
UsbDevice usbDevice = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
if(null != usbDevice){
Log.e(TAG,usbDevice.getDeviceName()+"已获取USB权限");
}
}
else {
//user choose NO for your previously popup window asking for grant perssion for this usb device
Log.e(TAG,String.valueOf("USB权限已被拒绝,Permission denied for device" + usbDevice));
}
}
}
}
};
mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
if(mUsbPermissionActionReceiver != null) {
registerReceiver(mUsbPermissionActionReceiver, filter);
}
PendingIntent mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
boolean has_idcard_usb = false;
for (final UsbDevice usbDevice : mUsbManager.getDeviceList().values()) {
if(usbDevice.getVendorId() == 1024 && usbDevice.getProductId() == 50010)//身份证设备USB
{
has_idcard_usb = true;
Log.e(TAG,usbDevice.getDeviceName()+"已找到身份证USB");
if(mUsbManager.hasPermission(usbDevice)){
Log.e(TAG,usbDevice.getDeviceName()+"已获取过USB权限");
}else{
Log.e(TAG,usbDevice.getDeviceName()+"请求获取USB权限");
mUsbManager.requestPermission(usbDevice, mPermissionIntent);
}
}
}
if(!has_idcard_usb)
{
Log.e(TAG,"未找到身份证USB");
}
}
调用
//尝试获取USB权限
tryGetUsbPermission();
网友评论