- 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.Hay dos formas de dar a conocer un receptor de emisión al sistema: una 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()
. También puedes usar las versiones sobrecargadas de las emisiones del sistema (receptor, filtro) o de la app (receptor, filtro, marcas). Si quieres obtener más información para crear receptores dinámicamente, consulta la descripción de la claseBroadcastReceiver
.Si este receptor controla emisiones que no son del sistema, especifica un valor para
android:exported
. Establece este valor entrue
si deseas que tu receptor pueda recibir emisiones de otras aplicaciones, o bien enfalse
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 admite o no el inicio directo, es decir, si puede ejecutarse o no 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 o no una instancia del receptor de emisión: "
true
" si es posible y "false
" si no. 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 puede crearse. android:exported
- Indica si el receptor de emisión puede recibir mensajes de fuentes ajenas al sistema fuera de su aplicación: "
true
" si puede y "false
" si no. Si es "false
", los únicos mensajes que puede recibir el receptor de emisión son los enviados por los componentes de la misma aplicación o por 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 la app receptora 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 debe establecer como referencia a un recurso de elemento 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 etiqueta predeterminada para todos los filtros de intents del receptor (consulta el atributolabel
del elemento<intent-filter>
).La etiqueta debe establecerse como una referencia a un recurso de string de manera que pueda localizarse como otras strings en la interfaz de usuario. Sin embargo, para tu conveniencia durante el desarrollo de la aplicación, también se puede establecer como string sin procesar.
android:name
- Es el nombre de la clase que implementa el receptor de emisión, una subclase de
BroadcastReceiver
. Debería ser un nombre de clase completo (como "com.example.project.ReportReceiver
"). Sin embargo, para abreviar, si el primer carácter del nombre es un punto (por ejemplo, ". ReportReceiver
"), se agrega al nombre del paquete especificado en el elemento<manifest>
.Una vez que publiques tu aplicación, no deberías cambiar este nombre (a menos que hayas configurado
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 deben tener para enviar un mensaje al receptor de la emisión.
Si no se configura este atributo, el permiso configurado por el atributo
permission
del elemento<application>
se aplica al receptor de la emisión. Si no se configura ninguno de los atributos, el receptor no está protegido por un permiso.Para obtener más información sobre permisos, consulta la sección Permisos en la introducción y el documento Seguridad y permisos.
android:process
- Es el nombre del proceso en el que se debe ejecutar el receptor de la 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
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: 2023-01-02 (UTC)
[]
[]