<receptor>

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 atributo enabled 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 de todos los filtros de intents del receptor. Consulta el atributo icon 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 de todos los filtros de intents del receptor. Consulta el atributo label 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 atributo process, 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. De esta manera, los componentes de diferentes aplicaciones pueden compartir un mismo proceso, lo que reduce el uso de recursos.

primera inclusión:
Nivel de API 1