Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utilisation d'un BroadcastReceiver pour des Toasts

    16 septembre 2019 à 15:38:12

    Bonjour,

    Je suis actuellement en train de travailler sur un projet assez nouveau pour moi, c'est à dire Android et ses applications.

    Voilà, j'ai une application que je nommerai "A" qui émule un terminal, et une application "B" qui est le BroadcastReceiver.

    L'application A émet ceci lorsque j’appuie sur la touche "a" du clavier:

    Action.sendBroadcast({
    action: "myaction.TOAST",
    extras:   [
              { name:"toast.type", value:"green", type:"string"},
              { name="toast.message", value:"mon message de toast", type:"string"},
              ]
    });

    Je n'ai aucun moyen de vérifier si cela fonctionne car l'application m'est fournie ainsi.

    Maintenant, mon application "B" est censé réceptionner ce Broadcast, à l'aide d'un BroadcastReceiver, et m'afficher à l'écran, de l'application "A" le toast adapté par rapport à ce qui est demandé

    Le problème est que malgré mes recherches infructueuses d'un exemple de BroadcastReceiver fonctionnel, j'ai fait quelques essais qui n'ont pas aboutis...

    J'ai repris mon code d'affichage des toasters, auquel j'ai tenté d'ajouter un broadcast receiver, mais je ne vois pas comment fait la suite :/

    Le code de l'application "B" ressemble à ceci:

    MainActivity.java:
    
    package mysuperpackage;
    
    
    import android.content.Context;
    import android.os.Bundle;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.Toast;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //setContentView(R.layout.activity_main);
            Broadcast bcr = new Broadcast();
        }
        public void Red_Toast(View view){
            Context context = getApplicationContext();
            LayoutInflater inflater = getLayoutInflater();
    
            View ctr = inflater.inflate(R.layout.red_toast,null);
            Toast toast = new Toast(context);
    
            toast.setView(ctr);
            toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL,0,0);
            toast.setDuration(Toast.LENGTH_SHORT);
            toast.show();
        }
    
        // Yellow toast
        public void Yellow_Toast(View view){
            Context context = getApplicationContext();
            LayoutInflater inflater = getLayoutInflater();
    
            View ctr = inflater.inflate(R.layout.yellow_toast, null);
            Toast toast = new Toast(context);
    
            toast.setView(ctr);
            toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL,0,0);
            toast.setDuration(Toast.LENGTH_SHORT);
            toast.show();
        }
        // green toast
        public void Green_Toast(View view){
            Context context = getApplicationContext();
            LayoutInflater inflater = getLayoutInflater();
    
            View ctr = inflater.inflate(R.layout.green_toast,null);
            Toast toast = new Toast(context);
    
            toast.setView(ctr);
            toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL,0,0);
            toast.setDuration(Toast.LENGTH_SHORT);
            toast.show();
        }
    }
    Broadcast.java:
    package mysuperpackage; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; public class Broadcast extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("myaction.TOAST"))
    { Bundle bundle = intent.getExtras(); if (bundle != null) { Object type =(Object) bundle.get("toast.type");
    Object message = (Object) bundle.get("toast.message"); if (type == "green"){ } if (type == "red"){ } if (type == "yellow"){ } } } } }



    Si une âme charitable  souhaite m'aider, je suis tout ouïe.



    -
    Edité par Galaxy Ghost 16 septembre 2019 à 15:40:35

    • Partager sur Facebook
    • Partager sur Twitter
      16 septembre 2019 à 16:12:13

      Salut,

      As-tu suivi une documentation ? Dans ton cas tu ne t'abonnes à rien au niveau de ton Broadcast. Tu créé juste un broadcast. Tu dois indiquer les événements auxquels ton Broadcast doit s'abonner. Généralement on fait ça dans le Manifest de l'application.

      • Partager sur Facebook
      • Partager sur Twitter
        16 septembre 2019 à 16:21:53

        Bonjour et merci de la réponse,

        Non, on m'a demandé de programmer un BroadcastReceiver, pour cela je me suis inspiré des quelques tutos que j'ai trouvés mais je ne savais pas qu'il fallait s'abonner à des évènements comment procède t-on ? 

        • Partager sur Facebook
        • Partager sur Twitter
          17 septembre 2019 à 10:03:34

          Bonjour, 

          Je me demandais après avoir lu la documentation qu'il m'a été donné ainsi que quelques autres que j'ai trouvé en lien dans celle-ci, est-il possible de faire ce qu'on me demande de faire via un broadcast ? 

          rappel:

          - 2 applications "A" et "B"

          - "A" émule un terminal, et lorsque l'utilisateur touche une certaine touche du clavier, elle émet un broadcast.

          - "B" récupère ce broadcast et affiche un toast spécifique à l'écran de l'application "A"

          • Partager sur Facebook
          • Partager sur Twitter

          Utilisation d'un BroadcastReceiver pour des Toasts

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown