2015-04-20 2 views
0

Приемник широковещательной передачи, зарегистрированный для ACTION_USB_DEVICE_DETACHED, работает нормально, но то же самое не работает для ACTION_USB_DEVICE_ATTACHED. Дело в том, что onReceive() не вызывается, когда запущено намерение ACTION_USB_DEVICE_ATTACHED.Радиовещательный приемник зарегистрирован динамически (через Activity), не работает для ACTION_USB_DEVICE_ATTACHED

Вот мой код, где я зарегистрировать приемники в OnCreate()

registerReceiver(mUsbDeviceReceiver, new IntentFilter(
      UsbManager.ACTION_USB_DEVICE_DETACHED)); 

    registerReceiver(mUsbDeviceReceiver, new IntentFilter(
      UsbManager.ACTION_USB_DEVICE_ATTACHED)); 

Вот код для класса BroadcastReceiver:

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(); 
      } 


     } 
    } 
}; 

ответ

0

Это так очень простой, но я забыл это сделать. .. Вот такой ответ, за который не был создан фильтр-заглушка USB_ATTACHED из документов Dev.

enter image description here

USB host ссылка Также Прокрутите вниз до нижней части страницы, чтобы увидеть ответ

Смежные вопросы