Participe do evento ⁠#Android11: apresentação de lançamento da versão Beta no dia 3 de junho.

<receiver>

sintaxe:
<receiver android:directBootAware=["true" | "false"]
              android:enabled=["true" | "false"]
              android:exported=["true" | "false"]
              android:icon="drawable resource"
              android:label="string resource"
              android:name="string"
              android:permission="string"
              android:process="string" >
        . . .
    </receiver>
contido em:
<application>
pode conter:
<intent-filter>
<meta-data>
descrição:
Declara um broadcast receiver (subclasse de BroadcastReceiver) como um dos componentes do aplicativo. Os broadcast receivers permitem que os aplicativos recebam intents que são transmitidos pelo sistema ou por outros aplicativos, mesmo quando outros componentes do aplicativo não estão em execução.

Há duas maneiras de tornar um broadcast receiver conhecido pelo sistema: uma é declará-lo no arquivo de manifesto com esse elemento. A outra é criar o receiver de modo dinâmico no código e registrá-lo com o método Context.registerReceiver(). Para mais informações sobre como criar receivers dinamicamente, consulte a descrição da classe BroadcastReceiver.

Aviso: limite o número de broadcast receivers que você definirá no app. Ter muitos broadcast receivers pode afetar o desempenho do app e a duração da bateria dos dispositivos dos usuários. Para mais informações sobre APIs que você pode usar no lugar da classe BroadcastReceiver para programar trabalhos em segundo plano, consulte Otimizações em segundo plano.

atributos:
android:directBootAware

Indica se o broadcast receiver está ciente da inicialização direta, ou seja, se ele pode ou não ser executado antes do usuário desbloquear o dispositivo.

Observação: durante a inicialização direta, um broadcast receiver no seu app só pode acessar os dados guardados no armazenamento protegido do dispositivo.

O valor padrão é "false".

android:enabled
Indica se o broadcast receiver pode ou não ser instanciado pelo sistema: "true" se puder e "false" se não puder. O valor padrão é "true".

O elemento <application> tem o próprio atributo enabled, que se aplica a todos os componentes do aplicativo, incluindo os broadcast receivers. Os atributos <application> e <receiver> precisam ser "true" para que o broadcast receiver seja ativado. Se algum for "false", ele será desativado, porque não poderá ser instanciado.

android:exported
Indica se o broadcast receiver pode receber mensagens de fontes externas ao aplicativo: "true" se puder e "false" se não puder. Se for "false", as únicas mensagens que o broadcast receiver poderá receber são aquelas enviadas por componentes do mesmo aplicativo ou aplicativos, com o mesmo ID de usuário.

O valor padrão depende de se o broadcast receiver contém ou não filtros de intent. A ausência de filtros significa que ele pode ser invocado apenas por objetos Intent que especifiquem o nome de classe exato. Isso implica que o receiver se destina apenas ao uso interno do app, já que outros normalmente não saberiam o nome da classe. Nesse caso, o valor padrão é "false". Por outro lado, a presença de pelo menos um filtro implica que o destinatário da transmissão deve receber intents transmitidos pelo sistema ou por outros aplicativos, de modo que o valor padrão é "true".

Esse atributo não é a única maneira de limitar a exposição externa de um broadcast receiver. Você também pode usar uma permissão para limitar as entidades externas que podem enviar mensagens para ele (veja o atributo permission).

android:icon
Um ícone que representa o broadcast receiver. Esse atributo precisa ser definido como uma referência a um recurso drawable que contém a definição da imagem. Se ele não for definido, o ícone especificado para o app como um todo será usado no lugar. Consulte o atributo icon do elemento <application>.

O ícone do broadcast receiver, definido aqui ou pelo elemento <application>, também é o ícone padrão de todos os filtros de intent do receiver. Consulte o atributo icon do elemento <intent-filter>.

android:label
Um rótulo legível pelo usuário para o broadcast receiver. Se esse atributo não for definido, o rótulo definido para o app como um todo será usado no lugar. Consulte o atributo label do elemento <application>.

O rótulo do broadcast receiver, definido aqui ou pelo elemento <application>, também é o rótulo padrão de todos os filtros de intent do receiver. Consulte o atributo label do elemento <intent-filter>.

O rótulo precisa ser definido como uma referência a um recurso de string, para que possa ser localizado como outras strings na interface do usuário. No entanto, para facilitar o desenvolvimento do app, ele também pode ser definido como uma string bruta.

android:name
O nome da classe que implementa o broadcast receiver, uma subclasse de BroadcastReceiver. Ele precisa ser um nome de classe totalmente qualificado (como, por exemplo, com.example.project.ReportReceiver). No entanto, como uma abreviação, se o primeiro caractere do nome for um ponto (por exemplo, . ReportReceiver), ele será anexado ao nome do pacote especificado no elemento <manifest>.

Depois de publicar seu aplicativo, não altere esse nome, a menos que você tenha definido android:exported="false".

Não há um padrão. O nome precisa ser especificado.

android:permission
O nome de uma permissão que os transmissores precisam ter para enviar uma mensagem ao broadcast receiver. Se este atributo não for definido, a permissão definida pelo atributo permission do elemento <application> se aplicará ao broadcast receiver. Se nenhum atributo for definido, o receiver não será protegido por uma permissão.

Para mais informações sobre permissões, consulte a seção Permissões na introdução e em um documento separado, Segurança e permissões.

android:process
O nome do processo no qual o broadcast receiver precisa ser executado. Normalmente, todos os componentes de um aplicativo são executados no processo padrão criado para ele. Ele tem o mesmo nome do pacote de aplicativos. O atributo process do elemento <application> pode definir um padrão diferente para todos os componentes. Mas cada componente pode substituir o padrão pelo próprio atributo process, permitindo que você distribua seu aplicativo em vários processos.

Se o nome atribuído a esse atributo começar com dois pontos (":"), um novo processo, particular para o app, será criado quando for necessário e o broadcast receiver será executado nesse processo. Se o nome do processo começar com um caractere minúsculo, o receiver será executado em um processo global com esse nome, desde que tenha permissão para fazê-lo. Isso permite que os componentes de diferentes apps compartilhem um processo, reduzindo o uso de recursos.

introduzido em:
API de nível 1