BroadcastReceiver dla ACTION_MEDIA_BUTTON nie działa

Piszę aplikację na Androida dla wersji 4.0.3 (ICS) systemu operacyjnego Android. Problem polega na tym, że nie otrzymuję danych wyjściowych z mojego Log.d () w metodzie onReceive () BroadcastReceiver, co oznacza, że ​​moja aplikacja nie obsługuje poprawnie transmisji.

Przeczytałem niezliczone pytania dotyczące sposobu uruchamiania kodu po kliknięciu ACTION_MEDIA_BUTTON. Mam nawet kopię + wklejony kod, gdy mój nie działał, tylko aby sprawdzić, czy zadziała.

ACTION_MEDIA_BUTTON, który chcę obsługiwać, topojedynczy przycisk na słuchawkach, który pozwala użytkownikowi odbierać / kończyć połączenia, odtwarzać / wstrzymywać muzykę.Zamiast mojej aplikacji obsługującej ten przycisk, gdy go klikam, zapasowy odtwarzacz muzyki na moim Nexusie S Android rozpoczyna odtwarzanie utworu.

Nie umieściłem mojego kodu w innej klasie, może dlatego nie działa?

Oto kod znaleziony w metodzie onCreate () (ten konkretny kod skopiowałem ze strony internetowej po tym, jak kod, który napisałem, nie działał):

<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>

Wszystko, czego naprawdę potrzebuję do przetestowania, to KEYCODE_HEADSETHOOK, ale nie zaszkodzi mieć tam inny kod do testowania, naprawię go, gdy wszystko będzie działać poprawnie.

W moim manifeście:

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

Początkowo uważałem, że może to być problem z uprawnieniami, ponieważ nie określiłem żadnych uprawnień do tego, jednak nie otrzymałem żadnego komunikatu o błędzie.

Jak powiedziałem wcześniej, próbowałem wielu odmian tego. Jednym z przykładów było użycie kodu pod tym linkiemnadawca transmisji onReceive problem ACTION_MEDIA_BUTTON Android z poprawkami CommonsWare. Ponownie jednak zmodyfikowałem go, aby nie był w osobnej klasie.

Z góry dziękuję za pomoc.

questionAnswers(3)

yourAnswerToTheQuestion