如何将参数传递给广播接收器的子类?
我设法让我的耳机按钮在按下时被我的应用程序识别,但其中一个按钮需要调用MyCustomActivity中的方法。问题是onReceive的第一个参数是一个无法强制转换为Active的上下文,并且使用MyCustomActivity的内部类在Android 4.1中不起作用,除非它是静态的(这具有相同的无法访问MyCustomActivity方法的问题)。
因此,留给我的唯一选择(为了同时支持2.x和4.1)是将活动作为参数传递给RemoteControlReceiver。
但是我该怎么做,当实例化它的唯一方法是通过:
private ComponentName mRemoteControlReceiver = new ComponentName(this, RemoteControlReceiver.class);
哪个不接受任何其他参数?
任何想法如何解决这个限制?
注意:如果我尝试定义为具有带有参数的构造函数,则会收到以下异常:RemoteControlReceiver
E/AndroidRuntime(2836): java.lang.RuntimeException: Unable to instantiate receiver com.example.RemoteControlReceiver: java.lang.InstantiationException: can't instantiate class com.example.RemoteControlReceiver; no empty constructor
Caused by:
E/AndroidRuntime(2836): Caused by: java.lang.InstantiationException: can't instantiate class com.example.RemoteControlReceiver; no empty constructor
E/AndroidRuntime(2836): at java.lang.Class.newInstanceImpl(Native Method)
E/AndroidRuntime(2836): at java.lang.Class.newInstance(Class.java:1319)
E/AndroidRuntime(2836): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2205)
因此,很明显,这个新的registerMediaButtonEventReceiver要求(在Android 4.1中引入)需要一个空的构造函数。
有没有办法解决这个问题?
例如,有没有办法获取对实际 RemoteControlReceiver 对象的引用(通过 间接实例化)?这样,在实例化 RemoteControlReceiver 之后,我可以使用访问器来设置它的数据成员?mAudioManager.registerMediaButtonEventReceiver()