我已經在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);
的MyReceiver
的onReceive
方法不會被調用。所以我的問題是:爲什麼當我拆下配件時它工作,但是當我連接配件時不工作?
您是否在您的** AndroidManifest.xml **中包含了所需的權限? – waqaslam
我有'<使用功能android:name =「android.hardware.usb.accessory」/>'。但這不是權限。我也需要這些嗎? –
請參閱http://developer.android.com/guide/topics/connectivity/usb/accessory.html#manifest – njzk2