BroadcastReceiver für ACTION_MEDIA_BUTTON funktioniert nicht

Ich schreibe eine Android-Anwendung für Version 4.0.3 (ICS) des Android-Betriebssystems. Das Problem ist, dass ich die Ausgabe von Log.d () nicht in der onReceive () -Methode des BroadcastReceiver erhalte, was bedeutet, dass meine Anwendung die Übertragung nicht ordnungsgemäß verarbeitet.

Ich habe unzählige Fragen zum Ausführen von Code beim Klicken auf eine ACTION_MEDIA_BUTTON gelesen. Ich habe sogar Code kopiert und eingefügt, als meiner nicht funktionierte, nur um zu sehen, ob er funktionieren würde.

Die ACTION_MEDIA_BUTTON, die ich behandeln möchte, ist dieSingle Taste an den Kopfhörern, mit der ein Benutzer Anrufe entgegennehmen / beenden, Musik abspielen / anhalten kann.Wenn ich auf diese Schaltfläche klicke, wird auf meinem Nexus S Android kein Titel abgespielt, sondern meine Anwendung verwendet diese Schaltfläche.

Ich habe meinen Code nicht in einer anderen Klasse platziert. Vielleicht funktioniert er deshalb nicht?

Hier ist der Code, der mit der onCreate () -Methode gefunden wurde (dieser spezielle Code, den ich von einer Website kopiert habe, nachdem der von mir geschriebene Code nicht funktioniert hat):

<code>IntentFilter mediaButtonFilter = new IntentFilter(
            Intent.ACTION_MEDIA_BUTTON);
    mediaButtonFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
    BroadcastReceiver brMediaButton = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            Log.d("Event", "Media button!");
            this.abortBroadcast();

            KeyEvent key = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
            if(key.getAction() == KeyEvent.ACTION_UP) {
                int keycode = key.getKeyCode();
                if(keycode == KeyEvent.KEYCODE_MEDIA_NEXT) {
                    Log.d("TestApp", "Next Pressed");
                } else if(keycode == KeyEvent.KEYCODE_MEDIA_PREVIOUS) {
                    Log.d("TestApp", "Previous pressed");
                } else if(keycode == KeyEvent.KEYCODE_HEADSETHOOK) {
                    Log.d("TestApp", "Head Set Hook pressed");
                }
            }

        }
    };
    registerReceiver(brMediaButton, mediaButtonFilter);
</code>

Alles, worauf ich wirklich testen muss, ist der KEYCODE_HEADSETHOOK, aber es tut nicht weh, den anderen Code zum Testen dort zu haben. Ich werde ihn reparieren, sobald alles richtig funktioniert.

In meinem Manifest:

<code><intent-filter android:priority="2147483647" >
            <action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</code>

Ich dachte ursprünglich, dass dies ein Berechtigungsproblem sein könnte, da ich keine Berechtigungen dafür angegeben habe, aber keine Fehlermeldung erhalten habe.

Wie ich bereits sagte, habe ich viele Variationen davon ausprobiert. Ein Beispiel war die Verwendung des Codes unter diesem LinkRundfunkempfänger onReceive Problem ACTION_MEDIA_BUTTON Android mit CommonsWare Korrekturen. Ich habe es jedoch wieder so modifiziert, dass es nicht in einer separaten Klasse war.

Vielen Dank im Voraus für Ihre Hilfe.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage