意图过滤器没有要求的onReceive的USB_ACCESSORY_ATTACHED [英] Intent Filter not calling onReceive for USB_ACCESSORY_ATTACHED
问题描述
我已经在一个 MyDialogFragment
和注册/未注册它在构造函数中声明的意图过滤器 USB_ACCESSORY_ATTACHED
片段的 onResume
和的onPause
的方法。 MyReceiver
延伸的BroadcastReceiver
中的内部类接收 USB_ACCESSORY_ATTACHED
意图。请参见下面的code:
I have declared an intent filter for USB_ACCESSORY_ATTACHED
in the constructor of a MyDialogFragment
and registered/unregistered it in the fragment's onResume
and onPause
methods. MyReceiver
extends BroadcastReceiver
in an inner class to receive the USB_ACCESSORY_ATTACHED
intent. See following code:
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");
}
}
}
不过, MyReceiver
的的onReceive
方法永远不会当我连接USB附件调用。此外,当我的意图变为
However, the onReceive
method of MyReceiver
never gets called when I attach a USB accessory. Furthermore, when I change the intent to
usbIntentFilter = new IntentFilter(UsbManager.ACTION_USB_ACCESSORY_DETACHED);
MyReceiver
的的onReceive
方法不会被调用。所以我的问题是:为什么当我拆下配件,而不是当我附上附件它的工作
the onReceive
method of MyReceiver
does get called. So my question is: why does it work when I detach the accessory, but not when I attach the accessory?
推荐答案
这样看来, USB_ACESSORY_ATTACHED
的意图从来没有真正得到过的活动,看到这么一个问题:
So it appears that USB_ACESSORY_ATTACHED
intent never actually gets through to the activity, see SO question :
<一个href="http://stackoverflow.com/questions/6981736/android-3-1-usb-host-broadcastreceiver-does-not-receive-usb-device-attached/9814826#9814826">Android 3.1 USB主机 - 的BroadcastReceiver没有收到USB_DEVICE_ATTACHED
您必须使用 onResume
方法由 USB_ACCESSORY_ATTACHED
间接调用工作。我不得不说,这是不明确的Android的文件中,我怀疑它的实现。
You have to work with the onResume
method that is called indirectly by USB_ACCESSORY_ATTACHED
. I have to say, this isn't clear in the Android documentation, and I question its implementation.
这篇关于意图过滤器没有要求的onReceive的USB_ACCESSORY_ATTACHED的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!