这是清单里面的内容(这是在
里面)<receiver android:name=".MediaButtonIntentReceiver">
<intent-filter android:priority="2147483647">
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
主要活动
private MediaButtonIntentReceiver receiver = new MediaButtonIntentReceiver();
onCreate(Bundle savedInstanceState){
..
IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
filter.setPriority(1000);
registerReceiver(receiver,filter);
..
}
这是MediaButtonIntentReceiver.class
public class MediaButtonIntentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
KeyEvent v_Event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (v_Event == null) {
return;
}
int v_Action = v_Event.getAction();
if (v_Action == KeyEvent.ACTION_DOWN) {
// do something
Toast.makeText(context, "BUTTON PRESSED!", Toast.LENGTH_SHORT).show();
}
abortBroadcast();
}
出于某种原因,每当我启动我的应用程序并单击我的耳机按钮时,我都不会收到任何Toast消息。音乐开始播放了。我已经尝试过寻找我正在做的事情,但对我来说没有运气。
答案 0 :(得分:0)
不是100%确定它是否有所作为,但在接收者的声明中你有'。'在功能名称之前,任何时候我注册了一个接收器,我没有那个,并且它工作正常。
您知道代码到达BroacastReceiver
的距离有多远吗?例如,v_Event
可以为空吗?或者v_Action肯定是KeyEvent.ACTIONDOWN
?