Я нашел много страниц об этом в сети, но ни одна из них не помогла мне. Я часами застрял в этой проблеме. Вот почему я решил задать свой вопрос.
То, что я хочу сделать, - это приложение, которое получает намерение типа ACTION_MEDIA_BUTTON, а метод onReceive () Broadcastreceiver что-то делает.
Моя активность такая:
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 от вещательного приемника не вызывается в любое время.
Кто-нибудь знает, что мне делать?