我正在尝试使用 Android 3.0+ 中的广播接收器来捕获 ACTION_MEDIA_BUTTON 意图。
我的接收器是我的 MainActivity 类的静态内部类。它是静态的,因为它是在我的 AndroidManifest.xml 中注册的,它必须找到类。但是,这意味着当按下播放/暂停按钮时,我的 BroadcastReceiver 无法返回我的活动。onReceive 方法被调用,但由于该类是静态的,我无法通知我的活动。
使用对我的活动或 Handler 对象的引用也不起作用,因为我无法获取 Android 系统正在调用的 BroadcastReceiver 对象。
动态声明接收器也应该可以工作,但这在 Android 3.0+ 上不起作用,出于某种奇怪的原因。它与以下内容有关:
AudioManager.registerMediaButtonEventReceiver(ComponentName)
需要调用哪个。
我的课的一些插图:
public class MainActivity extends Activity {
public static class MicReceiver extends BroadcastReceiver {
// onReceive is called
// How do I inform MainActivity of the press?
}
}
您对修复有任何想法吗?
谢谢!
[编辑] 请参阅下面的代码以动态注册我的接收器:(这目前不起作用)
mReceiver = new RemoteControlReceiver();
IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
filter.setPriority(2147483647);
registerReceiver(mReceiver, filter);
AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
am.registerMediaButtonEventReceiver(new ComponentName(getPackageName(), RemoteControlReceiver.class.getName()));