Broadcaster

 

Les broadcaster sont les diffuseurs d'évènements/messages via des intentions (intentions que l'on nommera des broadcast intents pour les différentier des intentions plus classiques).

Les messages ainsi diffusés pourront être réceptionnés par plusieurs applications, les applications qui se seront abonnées à ces broadcasts (diffusions).

 

Image non trouvée !Les broadcast intents sont essentiellement utilisées par Android pour indiquer des évènements dans le système.

 

Diffuser un évènement ou message

Il est possible de diffuser un évènement ou message à toutes les applications abonnées. Pour cela, il suffit de créer une intention, puis de la diffuser en utilisant sendBroadcast().

Par convention, le nom de l'évènement que vous allez diffuser se construit de la même manière qu'un package JAVA:

Par exemple : fr.free.supertos.MonEvenementAMoi

Il sera ensuite possible de passer des datas, extra datas.

 

Voici un exemple:

Intent intent = new Intent("fr.free.supertos.MonEvenementAMoi");
intent.putExtra(PARAMETRE1, param1);
intent.putExtra(PARAMETRE2, param2);

sendBroadcast(intent);

Comme vous pouvez le voir, vous ne lancez plus une activité, mais diffusez un broadcast intent...

 

Diffusion restreinte d'un évènement ou message

Restreindre:

Il s'agit d'indiquer une permission lors de la diffusion, seules les broadcast receivers ayant positionnés cette permission pourront recevoir ce message ou évènement:

String requiredPermission = "fr.free.supertos.MON_BROADCAST_PERMISSION";

 

sendBroadcast(Intent intent, String receiverPermission)

 

Diffusion ordonnée et restreinte d'un évènement ou message

Il s'agit d'ordonnée la diffusion d'un message aux applications abonnées et ayant les droits de traiter ce mesasge.

Ordonnée:

La diffusion se fait application par application et non en parallèle comme avec le sendBroadcast(). La diffusion pourra ainsi être interrompue par une application si elle juge inutile de poursuivre cette diffusion. L'ordre des applications qui traiteront ce message dépendra du choix d'Android qui respectera un niveau de priorité à la réception donné aux broadcast receivers. Le plus prioritaire recevant le message avant le moins prioritaire...

Restreindre:

Il s'agit d'indiquer une permission lors de la diffusion, seules les broadcast receivers ayant positionnés cette permission pourront recevoir ce message ou évènement:

String requiredPermission = "fr.free.supertos.MON_BROADCAST_PERMISSION";

 

Diffusion:

Pour envoyer l'évènement, il faudra utiliser:
sendOrderedBroadcast(intent, requiredPermission);

Ainsi, seules les broadcast receivers avec cette permission définie pourront recevoir ces intentions.

 

Image non trouvée !Il est possible qu'un évènement ne soit pas traité, et qu'une erreur remonte à la console indiquant que l'une des applications (émetteur ou récepteur) n'a pas les droits. Pour résoudre ce problème voir ici afin d'avoir un exemple sur le noeud <permissions>

 

Diffusion persistente

Cas particulier de broadcaster où les valeurs d'une intention persistent dans le temps permettant à des nouveaux receiver de recevoir immédiatement le message, bien que le broadcast soit terminé depuis longtemps.