0

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

<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 消息。音乐开始播放。我试过寻找我在做什么,但对我来说没有运气。

4

1 回答 1

0

不是 100% 确定它是否会有所不同,但在你的接收者的声明中你有一个“。” 在函数名称之前,任何时候我注册了一个接收器,我都没有在那里,它工作得很好。

你知道BroacastReceiver代码能走多远吗?例如可以v_Event为空?还是 v_Action 绝对是KeyEvent.ACTIONDOWN

于 2013-08-06T15:03:24.437 回答