我设法得到了我的耳机按钮被识别 https://stackoverflow.com/q/15057291/636571按下时由我的应用程序调用,但其中一个按钮需要调用 MyCustomActivity 中的方法。问题是 onReceive 的第一个参数是一个 Context,无法转换为 Activity 并使用 MyCustomActivity内部类 不适用于 Android 4.1 https://stackoverflow.com/a/13576130/636571除非它是静态的(同样存在无法访问 MyCustomActivity 方法的问题。
因此,留给我的唯一选择(为了支持 2.x 和 4.1)是将 Activity 作为参数传递给遥控接收器 https://stackoverflow.com/q/15057291/636571.
但是,当实例化它的唯一方法是通过以下方式时,我该怎么做:
private ComponentName mRemoteControlReceiver = new ComponentName(this, RemoteControlReceiver.class);
哪个不接受任何附加参数?
知道如何解决这个限制吗?
Note:如果我尝试定义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 对象的引用(通过间接实例化)mAudioManager.registerMediaButtonEventReceiver()
)?这样我就可以使用访问器来设置 RemoteControlReceiver 的数据成员after它已经被实例化了吗?