意图过滤器没有要求的onReceive的USB_ACCESSORY_ATTACHED [英] Intent Filter not calling onReceive for USB_ACCESSORY_ATTACHED

查看:576
本文介绍了意图过滤器没有要求的onReceive的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 间接调用工作。我不得不说,这是不明确的Andr​​oid的文件中,我怀疑它的实现。

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆