- 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, uma subclasse de
BroadcastReceiver
, como um dos componentes do aplicativo. Os broadcast receivers permitem que os aplicativos recebam intents transmitidas 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 delas é 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()
ou uma das versões sobrecarregadas dele.Para saber mais sobre como criar broadcast receivers dinamicamente, consulte a descrição da classe
BroadcastReceiver
.Se o broadcast receiver processa transmissões que não são do sistema, especifique um valor para
android:exported
. Defina esse valor como"true"
, se quiser que o receiver possa receber transmissões de outros aplicativos, ou"false"
, se quiser que ele só receba transmissões do seu próprio app.Não é necessário remover o atributo
android:permission
se ele já foi declarado.Aviso: limite o número de broadcast receivers que você vai 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 saber mais sobre APIs que você pode usar no lugar da classe
BroadcastReceiver
para agendar trabalhos em segundo plano, consulte Otimizações em segundo plano. - Atributos:
android:directBootAware
Define se o broadcast receiver tem reconhecimento de inicialização direta, ou seja, se ele pode ser executado antes do usuário desbloquear o dispositivo.
Observação: durante a inicialização direta, um broadcast receiver no app só pode acessar os dados que estejam em armazenamento protegido do dispositivo.
O valor padrão é
"false"
.android:enabled
- Define se o broadcast receiver pode ou não ser instanciado pelo sistema. Será
"true"
, se isso for possível, e"false"
, se não for. O valor padrão é"true"
.O elemento
<application>
tem o próprio atributoenabled
, que é usado em todos os componentes do app, incluindo os broadcast receivers. Os atributos<application>
e<receiver>
precisam ser"true"
para que o broadcast receiver seja ativado. Se um deles for"false"
, o receiver será desativado e não vai poder ser instanciado. android:exported
- Define se o broadcast receiver pode receber mensagens de origens que não são do sistema
fora do aplicativo. Será
"true"
, se isso for possível, e"false"
, se não for. Se for"false"
, as únicas mensagens recebidas pelo broadcast receiver serão aquelas enviadas pelo sistema, por componentes do mesmo aplicativo ou por aplicativos com o mesmo ID de usuário.Se não for especificado, o valor padrão vai depender da presença de filtros de intent no broadcast receiver. Se o receptor tiver pelo menos um filtro de intent, o valor padrão será
"true"
. Caso contrário, o valor padrão será"false"
.Esse atributo não é a única maneira de limitar a exposição externa de um broadcast receiver. Também é possível usar uma permissão para limitar as entidades externas que podem enviar mensagens a ele. Consulte o atributo
permission
. android:icon
- Um ícone que representa o broadcast receiver. Esse atributo é definido
como uma referência a um recurso drawable que contém a definição da imagem.
Se ele não for definido, será usado o ícone especificado para o aplicativo como
um todo. 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 atributoicon
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, será usado o rótulo definido para o aplicativo como
um todo. 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 atributolabel
do elemento<intent-filter>
.O rótulo é definido como uma referência a um recurso de string para que ele possa ser localizado como outras strings da interface do usuário. No entanto, para facilitar o desenvolvimento do aplicativo, 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
. Esse é um nome de classe totalmente qualificado, como"com.example.project.ReportReceiver"
. No entanto, como 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 o aplicativo, não mude esse nome (link em inglês), a menos que você defina
android:exported="false"
.Não há padrão. O nome precisa ser especificado.
android:permission
- O nome de uma permissão de que os transmissores precisam para enviar uma
mensagem ao broadcast receiver.
Se o atributo não for definido, a permissão definida pelo
atributo
permission
do elemento<application>
será ativada no broadcast receiver. Se nenhum atributo for definido, nenhuma permissão vai proteger o receiver.Para saber mais sobre permissões, consulte a seção Permissões na visão geral do manifesto do app e as Dicas de segurança.
android:process
- O nome do processo em que o broadcast receiver é 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 do aplicativo.
O atributo
process
do elemento<application>
pode definir um padrão diferente para todos os componentes. No entanto, cada componente pode substituir o padrão com o próprio atributoprocess
, permitindo distribuir 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 aplicativo, será criado quando necessário, e o broadcast receiver será executado nesse processo.Se o nome do processo começar com um caractere em letra minúscula, o receiver será executado em um processo global com esse nome, desde que tenha permissão. Isso permite que componentes de diferentes aplicativos compartilhem um processo, reduzindo o uso de recursos.
- Introduzido no:
- Nível 1 da API
<receptor>
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[null,null,["Última atualização 2025-07-27 UTC."],[],[],null,["# <receiver\u003e\n\nsyntax:\n:\n\n ```xml\n \u003creceiver android:directBootAware=[\"true\" | \"false\"]\n android:enabled=[\"true\" | \"false\"]\n android:exported=[\"true\" | \"false\"]\n android:icon=\"drawable resource\"\n android:label=\"string resource\"\n android:name=\"string\"\n android:permission=\"string\"\n android:process=\"string\" \u003e\n ...\n \u003c/receiver\u003e\n ```\n\ncontained in:\n: [\u003capplication\u003e](/guide/topics/manifest/application-element)\n\ncan contain:\n: [\u003cintent-filter\u003e](/guide/topics/manifest/intent-filter-element)\n\n [\u003cmeta-data\u003e](/guide/topics/manifest/meta-data-element)\n\ndescription:\n: Declares a broadcast receiver, a [BroadcastReceiver](/reference/android/content/BroadcastReceiver)\n subclass, as one of the application's components. Broadcast receivers enable\n applications to receive intents that are broadcast by the system or by other\n applications, even when other components of the application aren't running.\n\n\n There are two ways to make a broadcast receiver known to the system. One is to\n declare it in the manifest file with this element. The other is to create\n the receiver dynamically in code and register it with the\n [Context.registerReceiver()](/reference/android/content/Context#registerReceiver(android.content.BroadcastReceiver,%20android.content.IntentFilter))\n method or one of its overloaded versions.\n\n\n For more information about how to dynamically create receivers, see the\n [BroadcastReceiver](/reference/android/content/BroadcastReceiver) class\n description.\n\n\n If this receiver handles non-system broadcasts, specify a value for `android:exported`.\n Set this value to `\"true\"` if you want your receiver to be able to\n receiver broadcasts from other applications or `\"false\"` if you only\n want your receiver to be able to receive broadcasts from your own app.\n\n\n You don't have to remove the `android:permission` attribute if you\n already declared it.\n\n\n **Warning:** Limit how many broadcast\n receivers you set in your app. Having too many broadcast receivers can\n affect your app's performance and the battery life of users' devices.\n For more information about APIs you can use instead of the\n `BroadcastReceiver` class for scheduling background work, see\n [Background optimization](/topic/performance/background-optimization).\n\nattributes:\n:\n\n `android:directBootAware`\n\n : Whether the broadcast receiver is *Direct-Boot aware*, that\n is, whether it can run before the user unlocks the device.\n\n **Note:** During\n [Direct Boot](/training/articles/direct-boot), a broadcast\n receiver in your application can only access the data that is stored in\n *device protected* storage.\n\n The default value is `\"false\"`.\n\n `android:enabled`\n : Whether the broadcast receiver can be instantiated by the system. It's\n `\"true\"` if it can be, and `\"false\"` if not. The default value\n is `\"true\"`.\n\n\n The [\u003capplication\u003e](/guide/topics/manifest/application-element) element has its own\n [enabled](/guide/topics/manifest/application-element#enabled) attribute that applies to all\n application components, including broadcast receivers. The\n `\u003capplication\u003e` and\n `\u003creceiver\u003e` attributes must both be `\"true\"` for\n the broadcast receiver to be enabled. If either is `\"false\"`, it's\n disabled and can't be instantiated.\n\n `android:exported`\n : Whether the broadcast receiver can receive messages from non-system sources\n outside its application. It's `\"true\"` if it can, and `\"false\"`\n if not. If `\"false\"`, the only messages the broadcast receiver\n receives are those sent by the system, components of the same application, or applications\n with the same user ID.\n\n\n If unspecified, the default value depends on whether the broadcast receiver contains intent\n filters. If the receiver contains at least one intent filter, then the default value is\n `\"true\"`. Otherwise, the default value is `\"false\"`.\n\n\n This attribute is not the only way to limit a broadcast receiver's external exposure.\n You can also use a permission to limit the external entities that can send it messages.\n See the [permission](/guide/topics/manifest/receiver-element#prmsn) attribute.\n\n `android:icon`\n : An icon representing the broadcast receiver. This attribute is set\n as a reference to a drawable resource containing the image definition.\n If it isn't set, the icon specified for the application as a whole is used\n instead. See the [\u003capplication\u003e](/guide/topics/manifest/application-element)\n element's [icon](/guide/topics/manifest/application-element#icon) attribute.\n\n\n The broadcast receiver's icon, whether set here or by the\n `\u003capplication\u003e` element, is also the\n default icon for all the receiver's intent filters. See the\n [\u003cintent-filter\u003e](/guide/topics/manifest/intent-filter-element) element's\n [icon](/guide/topics/manifest/intent-filter-element#icon) attribute.\n\n `android:label`\n : A user-readable label for the broadcast receiver. If this attribute isn't\n set, the label set for the application as a whole is\n used instead. See the [\u003capplication\u003e](/guide/topics/manifest/application-element) element's\n [label](/guide/topics/manifest/application-element#label) attribute.\n\n\n The broadcast receiver's label, whether set here or by the\n `\u003capplication\u003e` element, is also the\n default label for all the receiver's intent filters. See the\n [\u003cintent-filter\u003e](/guide/topics/manifest/intent-filter-element) element's\n [label](/guide/topics/manifest/intent-filter-element#label) attribute.\n\n\n The label is set as a reference to a string resource, so that\n it can be localized like other strings in the user interface.\n However, as a convenience while you're developing the application,\n it can also be set as a raw string.\n\n `android:name`\n : The name of the class that implements the broadcast receiver, a subclass of\n [BroadcastReceiver](/reference/android/content/BroadcastReceiver). This is a fully qualified\n class name, such as `\"com.example.project.ReportReceiver\"`. However,\n as a shorthand, if the first character of the name is a period, for example,\n `\".ReportReceiver\"`, it is appended to the package name specified in\n the [\u003cmanifest\u003e](/guide/topics/manifest/manifest-element) element.\n\n Once you publish your application, [don't\n change this name](http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html), unless you set [android:exported](#exported)`=\"false\"`.\n\n\n There is no default. The name must be specified.\n\n `android:permission`\n : The name of a permission that broadcasters need in order to send a\n message to the broadcast receiver.\n If this attribute isn't set, the permission set by the\n [\u003capplication\u003e](/guide/topics/manifest/application-element) element's\n [permission](/guide/topics/manifest/application-element#prmsn) attribute applies\n to the broadcast receiver. If neither attribute is set, the receiver\n isn't protected by a permission.\n\n\n For more information about permissions, see the\n [Permissions](/guide/topics/manifest/manifest-intro#perms)\n section in the app manifest overview and\n [Security tips](/guide/topics/security/security).\n\n `android:process`\n\n : The name of the process in which the broadcast receiver runs. Normally, all components of an application run in the default process created for the application. It has the same name as the application package.\u003cbr /\u003e\n\n The\n [\u003capplication\u003e](/guide/topics/manifest/application-element) element's\n [process](/guide/topics/manifest/application-element#proc) attribute can set a different\n default for all components. But each component can override the default\n with its own `process` attribute, letting you spread your\n application across multiple processes.\n\n\n If the name assigned to this attribute begins with a colon (`:`), a new\n process, private to the application, is created when it's needed, and\n the broadcast receiver runs in that process.\n\n\n If the process name begins with a lowercase character, the receiver runs\n in a global process of that name, provided that it has permission to do so.\n This lets components in different applications share a process, reducing\n resource usage.\n\nintroduced in:\n: API level 1"]]