广播接收ACTION_MEDIA_BUTTON不起作用
我正在为Android操作系统的4.0.3(ICS)版本编写Android应用程序。问题是我没有在广播接收器的onReceive()方法中从我的Log.d()中获取输出,这意味着我的应用程序没有正确处理广播。
我已经阅读了无数关于如何在被点击ACTION_MEDIA_BUTTON上运行代码的问题。当我的代码不起作用时,我甚至复制+粘贴代码,只是为了看看它是否有效。
我想处理ACTION_MEDIA_BUTTON是耳机上的单个按钮,允许用户接听/结束通话,播放/暂停音乐。当我点击它时,我的Nexus S Android上的股票音乐播放器开始播放一首歌,而不是我的应用程序处理这个按钮。
我没有把我的代码放在另一个类中,也许这就是为什么它不起作用?
以下是在onCreate()方法上找到的代码(在我编写的代码不起作用后,我从网站上复制了这个特定代码):
IntentFilter mediaButtonFilter = new IntentFilter(
Intent.ACTION_MEDIA_BUTTON);
mediaButtonFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
BroadcastReceiver brMediaButton = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
Log.d("Event", "Media button!");
this.abortBroadcast();
KeyEvent key = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if(key.getAction() == KeyEvent.ACTION_UP) {
int keycode = key.getKeyCode();
if(keycode == KeyEvent.KEYCODE_MEDIA_NEXT) {
Log.d("TestApp", "Next Pressed");
} else if(keycode == KeyEvent.KEYCODE_MEDIA_PREVIOUS) {
Log.d("TestApp", "Previous pressed");
} else if(keycode == KeyEvent.KEYCODE_HEADSETHOOK) {
Log.d("TestApp", "Head Set Hook pressed");
}
}
}
};
registerReceiver(brMediaButton, mediaButtonFilter);
我真正需要测试的只是KEYCODE_HEADSETHOOK但是让其他代码在那里进行测试并没有什么坏处,一旦我可以让一切正常工作,我就会修复它。
在我的清单中:
<intent-filter android:priority="2147483647" >
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
我最初认为这可能是一个权限问题,因为我没有为此指定任何权限,但是我没有收到任何错误消息。
就像我之前说的,我已经尝试了许多变体。一个例子是使用此链接广播接收器 onReceive 问题ACTION_MEDIA_BUTTON Android 上使用代码,并进行了 CommonsWare 的更正。但是,我再次修改了它,使其不在单独的类中。
提前感谢您的帮助。