Android 动态注册的广播接收器(通过活动)不适用于操作\u USB\u设备\u连接
为已分离的ACTION_USB_设备注册的广播接收器工作正常,但已连接的ACTION_USB_设备不工作。问题是,当启动操作意图\u USB\u设备\u连接时,不会调用onReceive() 这是我在onCreate()中注册接收者的代码 以下是BroadcastReceiver类的代码:Android 动态注册的广播接收器(通过活动)不适用于操作\u USB\u设备\u连接,android,android-intent,broadcastreceiver,Android,Android Intent,Broadcastreceiver,为已分离的ACTION_USB_设备注册的广播接收器工作正常,但已连接的ACTION_USB_设备不工作。问题是,当启动操作意图\u USB\u设备\u连接时,不会调用onReceive() 这是我在onCreate()中注册接收者的代码 以下是BroadcastReceiver类的代码: private final BroadcastReceiver mUsbDeviceReceiver = new BroadcastReceiver() { @Override public
private final BroadcastReceiver mUsbDeviceReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(getBaseContext(), "onRecieve", Toast.LENGTH_SHORT).show();
String action = intent.getAction();
if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {
device = (UsbDevice) intent
.getParcelableExtra(UsbManager.EXTRA_DEVICE);
Toast.makeText(
SUSB_Serial.this,
"ACTION_USB_DEVICE_ATTACHED:", Toast.LENGTH_LONG)
.show();
Log.d("dj", "USB attached");
connectUsb();
} else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) {
try{
UsbDevice tempDevice = (UsbDevice) intent
.getParcelableExtra(UsbManager.EXTRA_DEVICE);
if(tempDevice != null){
if(tempDevice.getProductId() == device.getProductId()
&& tempDevice.getVendorId() == device.getVendorId()){
Toast.makeText(SUSB_Serial.this,
"ACTION_USB_DEVICE_DETACHED:",
Toast.LENGTH_LONG).show();
Log.d("dj", "USB detached");
AlertDialog dialog = null;
AlertDialog.Builder builder = new AlertDialog.Builder(SUSB_Serial.this);
builder.setMessage("Data reading failed, connect back the devices to continue").setTitle("Device Detached!!").
setPositiveButton("Okay", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
dialog = builder.create();
dialog.show();
Log.d("dj", "Releasing resources of USB");
releaseUsb();
}
}
}catch(Exception ex){
Log.d("dj", "Missing device reference");
ex.printStackTrace();
}
}
}
};
这非常简单,但我忘了这么做……以下是USB_连接的意图过滤器无法从开发文档中工作的答案 还链接 向下滚动到页面底部以查看答案
private final BroadcastReceiver mUsbDeviceReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(getBaseContext(), "onRecieve", Toast.LENGTH_SHORT).show();
String action = intent.getAction();
if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {
device = (UsbDevice) intent
.getParcelableExtra(UsbManager.EXTRA_DEVICE);
Toast.makeText(
SUSB_Serial.this,
"ACTION_USB_DEVICE_ATTACHED:", Toast.LENGTH_LONG)
.show();
Log.d("dj", "USB attached");
connectUsb();
} else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) {
try{
UsbDevice tempDevice = (UsbDevice) intent
.getParcelableExtra(UsbManager.EXTRA_DEVICE);
if(tempDevice != null){
if(tempDevice.getProductId() == device.getProductId()
&& tempDevice.getVendorId() == device.getVendorId()){
Toast.makeText(SUSB_Serial.this,
"ACTION_USB_DEVICE_DETACHED:",
Toast.LENGTH_LONG).show();
Log.d("dj", "USB detached");
AlertDialog dialog = null;
AlertDialog.Builder builder = new AlertDialog.Builder(SUSB_Serial.this);
builder.setMessage("Data reading failed, connect back the devices to continue").setTitle("Device Detached!!").
setPositiveButton("Okay", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
dialog = builder.create();
dialog.show();
Log.d("dj", "Releasing resources of USB");
releaseUsb();
}
}
}catch(Exception ex){
Log.d("dj", "Missing device reference");
ex.printStackTrace();
}
}
}
};