Java 安卓8 USB设备连接广播接收器
我有两个广播接收器,一个处理连接/断开连接,一个具有所需的用户权限。代码如下:Java 安卓8 USB设备连接广播接收器,java,android,usb,Java,Android,Usb,我有两个广播接收器,一个处理连接/断开连接,一个具有所需的用户权限。代码如下: public class DeviceAttachReceiver extends BroadcastReceiver { public static final String ACTION_USB_PERMISSION = "redacted.permission"; @Override public void onReceive(Context context, Intent intent
public class DeviceAttachReceiver extends BroadcastReceiver {
public static final String ACTION_USB_PERMISSION = "redacted.permission";
@Override
public void onReceive(Context context, Intent intent) {
if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(intent.getAction())) {
//Device was attached, ask for permission
UsbManager usbManager = (UsbManager)context.getSystemService(Context.USB_SERVICE);
UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
usbManager.requestPermission(device, PendingIntent.getBroadcast(context, 0, new Intent(ACTION_USB_PERMISSION), 0));
} else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(intent.getAction())) {
//Disconnected
UsbMonitorConnection.disconnect();
}
}
}
public class UsbPermissionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (MonitorAttachReceiver.ACTION_USB_PERMISSION.equals(intent.getAction())) {
UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
boolean granted = intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false);
if (granted) {
//Permission granted, connect the device
UsbMonitorConnection.connect(context, device);
}
}
}
}
问题是,第一个接收器(连接一个)工作正常,会弹出一个对话框供用户访问设备,而第二个接收器则不工作。在安卓8之前,这是可行的。我做错了什么?你能告诉我你把收音机放在哪里了吗?是在舱单上还是在活动中?根据文档
针对Android 8.0或更高版本的应用程序不能再为隐式广播注册广播接收器
哦,对了。。。所以我必须在活动中动态注册?针对较低的API是否足够?我实际上没有使用安卓8.0的功能。。。顺便说一句,如果我无法监听USB设备的连接,我该如何使用它们?这是必需的功能。我应该只运行一个线程和民意测验吗?它基本上是一个串行设备,我使用的是usbdeviconnection.bulkTransfer(…)。