- sintaxis:
<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>
- se incluye en:
<application>
- puede contener:
<intent-filter>
<meta-data>
- descripción:
- Declara un receptor de emisión (una subclase
BroadcastReceiver
) como uno de los componentes de la aplicación. Los receptores de emisión permiten que las aplicaciones reciban intents que transmiten el sistema y otras aplicaciones, incluso cuando otros componentes de la aplicación no se están ejecutando.Existen dos maneras de dar a conocer un receptor de emisión al sistema. Uno es declararlo en el archivo de manifiesto con este elemento. La otra es crear el receptor dinámicamente en el código y registrarlo con el método
Context.registerReceiver()
o una de sus versiones sobrecargadas.Si quieres obtener más información para crear receptores dinámicamente, consulta la descripción de la clase
BroadcastReceiver
.Si este receptor controla emisiones que no son del sistema, especifica un valor para
android:exported
. Establece este valor en"true"
si deseas que tu receptor pueda recibir emisiones de otras aplicaciones, o bien en"false"
si solo deseas que tu receptor pueda recibir emisiones de tu propia app.No es necesario quitar el atributo
android:permission
si ya lo declaraste.Advertencia: Limita la cantidad de receptores de emisión que configuras en tu app. Tener demasiados puede afectar su rendimiento y también la duración de batería de los dispositivos de los usuarios. Si quieres más información sobre las APIs que puedes usar en lugar de la clase
BroadcastReceiver
para programar el trabajo en segundo plano, consulta Optimización en segundo plano. - atributos:
android:directBootAware
Indica si el receptor de emisión reconoce el inicio directo, es decir, si puede ejecutarse antes de que el usuario desbloquee el dispositivo.
Nota: Durante el modo de inicio directo, un receptor de emisión en tu aplicación solo puede acceder a los datos almacenados en el espacio de almacenamiento protegido del dispositivo.
El valor predeterminado es
"false"
.android:enabled
- Indica si el sistema puede crear una instancia del receptor de emisión. Es
"true"
si es posible y"false"
si no lo es. El valor predeterminado es"true"
.El elemento
<application>
tiene su propio atributoenabled
que se aplica a todos los componentes de la aplicación, incluidos los receptores de emisión. Los atributos<application>
y<receiver>
deben ser"true"
para que se habilite el receptor de emisión. Si alguno es"false"
, está inhabilitado y no se puede crear la instancia. android:exported
- Indica si el receptor de emisión puede recibir mensajes de fuentes ajenas al sistema fuera de su aplicación. Es
"true"
si es posible y"false"
si no lo es. Si es"false"
, los únicos mensajes que recibe el receptor de emisión son los que envía el sistema, los componentes de la misma aplicación o las aplicaciones con el mismo ID de usuario.Si no se especifica, el valor predeterminado depende de si el receptor de emisión contiene filtros de intents. Si el receptor contiene al menos un filtro de intents, el valor predeterminado es
"true"
. De lo contrario, el valor predeterminado es"false"
.Este atributo no es la única forma de limitar la exposición externa de un receptor de emisión. También puedes usar un permiso para limitar las entidades externas que pueden enviarle mensajes. Consulta el atributo
permission
. android:icon
- Es un ícono que representa al receptor de emisión. Este atributo se establece como referencia a un recurso de elementos de diseño que contiene la definición de la imagen.
Si no está configurado, en su lugar se usa el ícono especificado para toda la aplicación. Consulta el atributo
icon
del elemento<application>
.El ícono del receptor de emisión, ya sea que se configure aquí o lo configure el elemento
<application>
, también es el predeterminado para todos los filtros de intents del receptor. Consulta el atributoicon
del elemento<intent-filter>
. android:label
- Es una etiqueta legible por el usuario para el receptor de emisión. Si no se establece este atributo, en su lugar se usa la etiqueta configurada para toda la aplicación. Consulta el atributo
label
del elemento<application>
.La etiqueta del receptor de emisión, ya sea que se configure aquí o la configure el elemento
<application>
, también es la predeterminada para todos los filtros de intents del receptor. Consulta el atributolabel
del elemento<intent-filter>
.La etiqueta se establece como una referencia a un recurso de cadenas, de manera que pueda localizarse como otras cadenas de la interfaz de usuario. Sin embargo, para tu conveniencia durante el desarrollo de la aplicación, también se puede establecer como cadena sin procesar.
android:name
- Es el nombre de la clase que implementa el receptor de emisión, una subclase de
BroadcastReceiver
. Este es un nombre de clase completamente calificado, como"com.example.project.ReportReceiver"
. Sin embargo, como atajo, si el primer carácter del nombre es un punto (por ejemplo,".ReportReceiver"
), se agregará al nombre del paquete especificado en el elemento<manifest>
.Una vez que publiques tu aplicación, no cambies este nombre, a menos que configures
android:exported="false"
.No hay ningún valor predeterminado. Se debe especificar el nombre.
android:permission
- Es el nombre de un permiso que las emisoras necesitan para enviar un mensaje al receptor de emisión.
Si no se establece este atributo, se usará el permiso establecido por el atributo
permission
del elemento<application>
en el receptor de emisión. Si no se establece ninguno de los atributos, el receptor no estará protegido por un permiso.Si deseas obtener más información sobre los permisos, consulta la sección Permisos en la descripción general del manifiesto de la app y las Sugerencias de seguridad.
android:process
- Es el nombre del proceso en el que se ejecuta el receptor de emisión.
Por lo general, todos los componentes de una aplicación se ejecutan en el proceso predeterminado creado para ella. Tiene el mismo nombre que el paquete de la aplicación.
El atributo
process
del elemento<application>
puede establecer un valor predeterminado diferente para todos los componentes. Sin embargo, cada componente puede anular el valor predeterminado con su propio atributoprocess
, lo que te permite repartir tu aplicación entre varios procesos.Si el nombre asignado a este atributo comienza con dos puntos (
:
), cuando es necesario, se crea un nuevo proceso, privado para la aplicación, y el receptor de emisión se ejecuta en ese proceso.Si el nombre del proceso comienza con un carácter en minúscula, el receptor se ejecutará en un proceso global con ese nombre, siempre que tenga permiso para hacerlo. Esto permite que los componentes de diferentes aplicaciones compartan un mismo proceso y reduzcan de esa forma el uso de recursos.
- primera inclusión:
- Nivel de API 1
<receptor>
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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"]]