Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓8 USB设备连接广播接收器_Java_Android_Usb - Fatal编程技术网

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(…)。