【发布时间】:2022-12-31 19:05:41
【问题描述】:
我正在使用以下代码访问 Android 上的 USB 设备。
private final String ACTION_USB_PERMISSION = "com.myapp.USB_PERMISSION";
private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
log(Log.INFO, TAG, "on intent received >" + intent.getAction());
if (ACTION_USB_PERMISSION.equals(action)) {
log(Log.INFO, TAG, "On receive for usb permission");
synchronized (this) {
UsbDevice device = (UsbDevice) intent
.getParcelableExtra(UsbManager.EXTRA_DEVICE);
if (intent.getBooleanExtra(
UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
log(Log.INFO, TAG, "Usb connection permission accepted");
//permission granted
if (device != null) {
log(Log.INFO, TAG, "usb connection devices");
} else {
log(Log.INFO, TAG, "No usb connection devices");
}
} else {
log(Log.INFO, TAG, "Usb connection permission denied");
UIHelper.showToastLong("Usb permission is needed to use the USB Device", activity);
}
}
}
}
};
UsbManager usbManager = (UsbManager) activity.getSystemService(Context.USB_SERVICE);
PendingIntent permissionIntent = PendingIntent.getBroadcast(activity, 0,
new Intent(ACTION_USB_PERMISSION), 0);
activity.registerReceiver(mUsbReceiver, new IntentFilter(ACTION_USB_PERMISSION));
while (true) {
if (!usbManager.hasPermission(usbDevice)) {
usbManager.requestPermission(usbDevice, permissionIntent);
} else {
break;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
这在 Android 10 上运行良好。但在 Android 7.1.2 上不起作用
权限请求弹出窗口一遍又一遍地出现,并且永远不会触发 mUsbReceiver。这是什么原因?
【问题讨论】:
标签: android broadcastreceiver usb