【发布时间】:2011-07-06 21:22:12
【问题描述】:
我在网上找到了很多关于此的页面,但没有一个对我有帮助。我已经被这个问题困了几个小时了。这就是为什么我决定提出自己的问题。
我想做的是一个应用程序接收类型为 ACTION_MEDIA_BUTTON 的意图,并且 Broadcastreceiver 的 onReceive() 方法会做一些事情。
我的活动是这样的:
public class MusicControlActivity extends Activity {
private MediaButtonIntentReceiver receiver = new MediaButtonIntentReceiver();
@Override
public void onCreate(Bundle p_SavedInstanceState) {
super.onCreate(p_SavedInstanceState);
setContentView(R.layout.main);
IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
filter.setPriority(1000);
registerReceiver(receiver,filter);
}
@Override
public void onDestroy()
{
unregisterReceiver(receiver);
}
我的广播接收器如下:
public class MediaButtonIntentReceiver extends BroadcastReceiver {
public MediaButtonIntentReceiver()
{
super();
}
@Override
public void onReceive(Context context, Intent intent)
{
String v_IntentAction = intent.getAction();
if (!Intent.ACTION_MEDIA_BUTTON.equals(v_IntentAction)) {
return;
}
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();
}
}
问题是不管我做什么,它都不起作用。我已经尝试像上面的代码一样使用 registerReceiver 动态注册它。我也像这样在 AndroidManifest.xml 中静态尝试过:
<receiver android:name=".MediaButtonIntentReceiver" android:enabled="true">
<intent-filter android:priority="10000000">
<action android:name="android.intent.action.ACTION_MEDIA_BUTTON" />
</intent-filter>
</receiver>
如您所见,我已将优先级设置为较高级别,即使它不起作用。 我整天都在做这个,我不知道该怎么办。任何时候都不会调用来自广播接收器的 onReceive 方法。
有人知道我该怎么办吗?
【问题讨论】:
-
你试过
android:priority="2147483647"吗? -
没有。我会尝试,我回帖!谢谢!
标签: android android-intent broadcastreceiver