2013-11-04 33 views
3

我已經在MyDialogFragment的構造函數中聲明瞭USB_ACCESSORY_ATTACHED的意圖過濾器,並在片段的onResume和方法中註冊/取消註冊。 MyReceiver在內部類中延伸BroadcastReceiver以接收USB_ACCESSORY_ATTACHED意圖。請參見下面的代碼:Intent Filter not calling onceceive for USB_ACCESSORY_ATTACHED

public class MyDialogFragment extends DialogFragment { 

    private Context context; 
    private IntentFilter usbIntentFilter; 
    private MyReceiver myReceiver; 

    MyDialogFragment(Context context) { 
     usbIntentFilter = new IntentFilter(UsbManager.ACTION_USB_ACCESSORY_ATTACHED); 
     myReceiver = new myReceiver(); 
     this.context = context; 
    } 


    @Override 
    public void onResume() { 
      super.onResume(); 

      // Register broadcast receiver 
     context.registerReceiver(myReceiver, usbIntentFilter); 
    } 

    @Override 
    public void onPause() { 
      super.onPause(); 

      // Unregister broadcast receiver 
      context.unregisterReceiver(myReceiver); 
    } 

    class MyReceiver extends BroadcastReceiver { 

     @Override 
     public void onReceive(Context context, Intent intent) { 

      Log.d("MyApp","Called USB receiver"); 

     } 
    } 
} 

然而,當我連接USB配件的MyReceiver從來沒有onReceive方法被調用。此外,當我改變的意圖,

usbIntentFilter = new IntentFilter(UsbManager.ACTION_USB_ACCESSORY_DETACHED); 

MyReceiveronReceive方法不會被調用。所以我的問題是:爲什麼當我拆下配件時它工作,但是當我連接配件時不工作?

+0

您是否在您的** AndroidManifest.xml **中包含了所需的權限? – waqaslam

+0

我有'<使用功能android:name =「android.hardware.usb.accessory」/>'。但這不是權限。我也需要這些嗎? –

+0

請參閱http://developer.android.com/guide/topics/connectivity/usb/accessory.html#manifest – njzk2

回答