BroadcastReceiver for ACTION_MEDIA_BUTTON不起作用

时间:2013-08-06 14:52:28

标签: android

这是清单里面的内容(这是在

里面)
<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消息。音乐开始播放了。我已经尝试过寻找我正在做的事情,但对我来说没有运气。

1 个答案:

答案 0 :(得分:0)

不是100%确定它是否有所作为,但在接收者的声明中你有'。'在功能名称之前,任何时候我注册了一个接收器,我没有那个,并且它工作正常。

您知道代码到达BroacastReceiver的距离有多远吗?例如,v_Event可以为空吗?或者v_Action肯定是KeyEvent.ACTIONDOWN