Implémentation d’une alerte de démarrage via l’enregistrement statique

Cette section fait suite à la précédente sur l’enregistrement dynamique et explique l’enregistrement statique d’un récepteur de diffusion (Broadcast Receiver) pour recevoir un broadcast système au démarrage de l’appareil et afficher un message Toast.

1. Différences clés : Enregistrement dynamique vs statique

  • Enregistrement dynamique : On enregistre le récepteur via registerReceiver directement dans le code, généralement dans la méthode onCreate de l’Activity. L’application doit avoir été lancée au moins une fois pour pouvoir recevoir des broadcasts ; une fois fermée, elle n’en reçoit plus. L’enregistrement et la destruction sont contrôlables manuellement, ce qui offre une grande flexibilité.
  • Enregistrement statique : On déclare le récepteur avec la balise <receiver> dans le fichier AndroidManifest.xml. Il n’est pas nécessaire que l’application ait été lancée au préalable ; une fois le système démarré, le récepteur est automatiquement réveillé pour écouter les broadcasts système.

2. Étapes détaillées

① Créer la classe du récepteur BootCompleteReceiver
public class BootCompleteReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Démarrage du système terminé", Toast.LENGTH_LONG).show();
    }
}
Langage du code : PHP (php)
  • Création : Dans Android Studio, faites un clic droit sur le package → New → Other → Broadcast Receiver.
  • Détails des paramètres :
    • Enabled : Indique si le récepteur est activé (cochez cette case).
    • Exported : Indique si le récepteur accepte les broadcasts système venant de l’extérieur de l’application (cochez cette case, car nous devons recevoir le broadcast de démarrage système, qui est un broadcast externe).

Mettre exported="false" dans le manifest, comme on peut le voir dans certains supports de cours, est une erreur. Pour recevoir un broadcast système, vous devez impérativement définir exported="true".

② Ajouter les permissions dans AndroidManifest.xml
<!-- Permission pour recevoir le broadcast de fin de démarrage -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
Langage du code : HTML, XML (xml)
③ Enregistrer statiquement le receiver + intent-filter dans <application>
<receiver
    android:name=".BootCompleteReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <!-- Action de fin de démarrage -->
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>
Langage du code : HTML, XML (xml)
  • intent-filter : Le filtre qui déclare quel type de broadcast ce récepteur écoute. Ici, on surveille le broadcast système BOOT_COMPLETED.

3. Points importants

N’écrivez jamais de logique lourde dans onReceive() ! La méthode onReceive du récepteur s’exécute sur le thread principal et la limite de temps d’exécution est très courte (environ 10 secondes). Si vous y effectuez des tâches longues, le système déclenchera une erreur ANR (Application Not Responding) et l’application plantera.

Bonne pratique : Le récepteur ne doit servir qu’au déclenchement léger d’actions, par exemple :

  1. Afficher une notification.
  2. Démarrer un Service en arrière-plan.
  3. Lancer une Activity. Confiez la logique métier complexe au Service pour traitement ; ne la codez pas directement dans onReceive.

Implémentation d’une alerte de démarrage via l’enregistrement statique

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *