我研究了ACTION_MEDIA_BUTTON
意图并试图使用它来拦截按钮按下事件,并使用toast在屏幕上呈现它们。我注册了接收器以拦截两个意图:
ACTION_HEADSET_PLUG
- 插入耳机ACTION_MEDIA_BUTTON
- 接收按钮按下事件
这是在我的主要活动中完成的:
IntentFilter mediaFilter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
mediaFilter.setPriority(10000);
registerReceiver(_receiver, new IntentFilter(Intent.ACTION_HEADSET_PLUG));
registerReceiver(_receiver, mediaFilter);
这是接收器中处理按钮按下的部分: if (action.equals(Intent.ACTION_HEADSET_PLUG))
{
Toast.makeText(context, "earphones activity",Toast.LENGTH_SHORT).show();
if (intent.getExtras().getInt("state")==1)//if plugged
Toast.makeText(context, "earphones plugged",Toast.LENGTH_LONG).show();
else Toast.makeText(context, "earphones un-plugged",Toast.LENGTH_LONG).show();
}
else
if (action.equals(Intent.ACTION_MEDIA_BUTTON))
{
Toast.makeText(context, "button pressed",Toast.LENGTH_LONG).show();
key=intent.getExtras().getString("EXTRA_KEY_EVENT");
Toast.makeText(context, key,Toast.LENGTH_LONG).show();
}
现在处理耳机插入和拔出的部分运行良好,但截取按钮按下的部分没有起作用。
有没有什么原因导致处理 ACTION_MEDIA_BUTTON
的代码不起作用?
我是否需要特殊权限来截取这样的意图?
我正在使用三星Galaxy S2测试代码。
我查看了所有类似的帖子并尝试了一切。不幸的是,似乎没有任何作用。