Registrador de receptor de transmissão no manifesto versus atividade

Preciso de ajuda para entender quando posso esperar que meu receptor de broadcast funcione quando registrado no manifesto, em vez de ter que ser registrado a partir de uma atividade ou serviço em execução.

Por exemplo, se eu registrar um receptor autônomo com o seguinte filtro de intenção, ele funciona sem ter uma referência de serviço / atividade para ele:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.blk_burn.standalonereceiver"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />
    <uses-permission android:name="android.permission.WAKE_LOCK"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >

        <receiver android:name="TestReceiver">
            <intent-filter>
                <action android:name="android.media.AUDIO_BECOMING_NOISY"/>
            </intent-filter>
        </receiver>

    </application>

</manifest>

No entanto, se eu substituirandroid.media.AUDIO_BECOMING_NOISY comandroid.intent.action.HEADSET_PLUG o receptor não é acionado (Documentação do Android)

Pelo que encontrei neste site você tem que registrar este receptor de uma atividade ou serviço que já está em execução para que ele funcione (Postar).

Alguém pode me dizer por que isso não funciona apenas ajustando o filtro de intenção no manifesto e por que você precisa ter um serviço em execução em segundo plano que referencia / registra o receptor?

Existe uma solução para que eu possa registrar meu receptor no manifesto do meu aplicativo usando um filtro de intenção comandroid.intent.action.HEADSET_PLUG?

Como posso identificar quais ações de difusão dodocumentação android precisa ter um serviço ou atividade registrá-los versus apenas ter o filtro correto no manifesto?

questionAnswers(2)

yourAnswerToTheQuestion