<destinataire>

Syntaxe :
<receiver android:directBootAware=["true" | "false"]
          android:enabled=["true" | "false"]
          android:exported=["true" | "false"]
          android:icon="drawable resource"
          android:intentMatchingFlags=["none" | "enforceIntentFilter" | "allowNullAction"]
          android:label="string resource"
          android:name="string"
          android:permission="string"
          android:process="string" >
    ...
</receiver>
Contenu dans :
<application>
Peut contenir :
<intent-filter>
<meta-data>
<property>
Description :
Déclare un broadcast receiver (une sous-classe BroadcastReceiver) comme l'un des composants de l'application. Les broadcast receivers permettent aux applications de recevoir des intents diffusés par le système ou par d'autres applications, même lorsque les autres composants de l'application ne sont pas en cours d'exécution.

Le broadcast receiver peut être connu du système de deux manières. La première consiste à le déclarer dans le fichier manifeste avec cet élément. L'autre consiste à créer le receiver dynamiquement dans le code et à l'enregistrer avec la méthode Context.registerReceiver() ou l'une de ses versions surchargées.

Pour en savoir plus sur la création dynamique de receivers, consultez la description de la classe BroadcastReceiver.

Si ce receiver gère des diffusions non système, spécifiez une valeur pour android:exported. Définissez cette valeur sur "true" si vous souhaitez que votre receiver puisse recevoir des diffusions d'autres applications ou "false" si vous souhaitez qu'il ne puisse recevoir que des diffusions de votre propre application.

Vous n'avez pas besoin de supprimer l'attribut android:permission si vous l'avez déjà déclaré.

Avertissement : Limitez le nombre de broadcast receivers que vous définissez dans votre application. Un nombre trop élevé de broadcast receivers peut affecter les performances de votre application et l'autonomie de la batterie des appareils des utilisateurs. Pour plus d'informations sur les API que vous pouvez utiliser à la place de la BroadcastReceiver classe pour planifier des tâches en arrière-plan, consultez Optimisation des processus en arrière-plan.

Attributs :
android:directBootAware

Indique si le broadcast receiver est compatible avec le démarrage direct, c'est-à-dire s'il peut être exécuté avant que l'utilisateur déverrouille l'appareil.

Remarque : Pendant le démarrage direct, un broadcast receiver de votre application ne peut accéder qu'aux données stockées dans l'espace de stockage protégé par l'appareil.

La valeur par défaut est "false".

android:enabled
Indique si le système peut instancier le broadcast receiver. Cette valeur indique "true" si l'activité peut être instanciée, et "false" dans le cas contraire. La valeur par défaut est "true".

L'élément <application> possède son propre enabled attribut qui s'applique à tous les composants d'application, y compris les broadcast receivers. Les <application> et <receiver> attributs doivent tous les deux être "true" pour que le broadcast receiver puisse être activé. Si l'un d'eux indique "false", il est désactivé et ne peut pas être instancié.

android:exported
Indique si le broadcast receiver peut recevoir des messages provenant de sources autres que le système en dehors de son application. Cette valeur indique "true" si l'activité peut être instanciée, et "false" dans le cas contraire. Si la valeur est "false", les seuls messages que le broadcast receiver reçoit sont ceux envoyés par le système, les composants de la même application ou les applications ayant le même ID utilisateur.

Si aucune valeur n'est spécifiée, la valeur par défaut varie selon que le broadcast receiver contient ou non des filtres d'intent. Si le receiver contient au moins un filtre d'intent, la valeur par défaut est "true". Sinon, la valeur par défaut est "false".

Cet attribut n'est pas le seul moyen de limiter l'exposition externe d'un broadcast receiver. Vous pouvez également utiliser une autorisation pour limiter les entités externes qui peuvent lui envoyer des messages. Consultez l'attribut permission.

android:icon
Icône représentant le broadcast receiver. Cet attribut est défini comme référence à une ressource drawable contenant la définition de l'image. Si cette valeur n'est pas définie, l'icône spécifiée pour l'application dans son ensemble est utilisée à la place. Consultez l'attribut icon de l'élément <application>.

L'icône du broadcast receiver, définie ici ou par l'élément <application>, est également l'icône par défaut de tous les filtres d'intent du receiver. Consultez l' <intent-filter> attribut de l'élément icon.

android:intentMatchingFlags

Utilisez cet attribut pour affiner la façon dont le système met en correspondance les intents entrants avec les composants de l'application. Par défaut, aucune règle de correspondance spéciale n'est appliquée.

La valeur définie sur une balise <receiver> remplace celle définie sur la balise <application>.

La valeur doit correspondre à une ou plusieurs des options suivantes, séparées par le caractère "|" :

Option Description
none Désactive toutes les règles de correspondance spéciales pour les intents entrants. Lorsque vous spécifiez plusieurs options, les valeurs conflictuelles sont résolues en donnant la priorité à l'option none flag.
enforceIntentFilter

Applique une correspondance plus stricte pour les intents entrants :

  • Les intents explicites doivent correspondre au filtre d'intent du composant cible.
  • Les intents sans action ne correspondent à aucun filtre d'intent.
allowNullAction

Assouplit les règles de correspondance pour permettre aux intents sans action de correspondre. Cette option est utilisée conjointement avec enforceIntentFilter pour obtenir le comportement suivant :

  • Les intents explicites doivent correspondre au filtre d'intent du composant cible.
  • Les intents sans action sont autorisés à correspondre à n'importe quel filtre d'intent.

Pour en savoir plus, consultez la section Intents plus sécurisés dans les changements de comportement d'Android 16 (niveau d'API 36).

android:label
Libellé lisible pour le broadcast receiver. Si cet attribut n'est pas défini, le libellé défini pour l'application dans son ensemble est utilisé à la place. Consultez l'attribut label de l'élément <application>.

Le libellé du broadcast receiver, défini ici ou par l'élément <application>, est également le libellé par défaut de tous les filtres d'intent du receiver. Consultez l'attribut label de l'élément <intent-filter>.

Le libellé est défini comme une référence à une ressource de chaîne, de sorte qu'il puisse être localisé comme les autres chaînes de l'interface utilisateur. Toutefois, lorsque vous développez l'application, vous pouvez également le définir comme une chaîne brute.

android:name
Nom de la classe qui implémente le broadcast receiver, une sous-classe de BroadcastReceiver. Il s'agit d'un nom de classe complet, tel que "com.example.project.ReportReceiver". Cependant, pour faire court, si le premier caractère du nom est un point (".ReportReceiver", par exemple), il est ajouté au nom du package spécifié dans l'élément <manifest>.

Une fois l'application publiée, ne modifiez pas ce nom, sauf si vous définissez android:exported="false".

Il n'y a pas de valeur par défaut. Vous devez renseigner le nom.

android:permission
Nom d'une autorisation dont les diffuseurs ont besoin pour envoyer un message au broadcast receiver. Si cet attribut n'est pas défini, l'autorisation définie par l'attribut permission de l'élément <application> s'applique au broadcast receiver. Si aucun attribut n'est défini, le receiver n'est pas protégé par une autorisation.

Pour en savoir plus sur les autorisations, consultez la section Autorisations dans la présentation du fichier manifeste d'application et les conseils de sécurité.

android:process

Nom du processus dans lequel le broadcast receiver s'exécute. Normalement, tous les composants d'une application s'exécutent dans le processus par défaut créé pour celle-ci. Il porte le même nom que le package de l'application.

L'attribut process de l'élément <application> peut définir une valeur par défaut différente pour tous les composants. Toutefois, chaque composant peut remplacer la valeur par défaut par son propre attribut process, ce qui vous permet de répartir votre application sur plusieurs processus.

Si le nom attribué à cet attribut commence par le caractère deux-points (:), un nouveau processus privé, créé pour l'application, est créé lorsque cela est nécessaire et que le broadcast receiver est exécuté au cours de ce processus.

Si le nom du processus commence par une lettre minuscule, le receiver sera exécuté dans un processus global du même nom, à condition qu'il soit autorisé à le faire. Cela permet aux composants de différentes applications de partager un processus, ce qui réduit l'utilisation des ressources.

Première apparition :
Niveau d'API 1