我设法让我的耳机按钮得到认可按下时我的应用程序,但其中一个按钮需要调用这是在MyCustomActivity的方法。 问题是的onReceive的第一个参数是不能转换到活动并使用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要求(安卓4.1中引入)预计一个空的构造 。
有没有办法解决呢?
例如,有一种方式来获得实际RemoteControlReceiver对象的引用(经由间接实例mAudioManager.registerMediaButtonEventReceiver()
所以,我可以用一个访问设置RemoteControlReceiver的数据成员已被实例化后 ?