Comment utiliser un BroadcasterReceive sur androidStudio !

Fermé
kaled269 - Modifié le 3 janv. 2023 à 09:06
Kaled269 Messages postés 3 Date d'inscription vendredi 23 décembre 2022 Statut Membre Dernière intervention 4 janvier 2023 - 4 janv. 2023 à 20:08

Bonjour,

Bonjour à Tous ,Je suis  debutant dans  le developpement mobile .et j'aurai besoin de votre aide.
Je veux que mon application arrive à capter une fois que le wifi est activé .si ce dernier est activé une notification doit s' afficher en haut du telephone avec un message disant que wifi activé .
j utilise donc un BroadcasterReceiver pour cela ,,cependant mon code fonctionne(la notification s affiche) mais uniquement quand l application est lancé .c.a.d ,si je sors de l application et que j active le wifi  la notification ne affiche  pas . 
Alors j aurai besoin de votre aide pour  cela ,faire en sorte que l'affiche de la notification se fasse mem en dehors de l application une fois que le wifi est activé..

Voici mon code:

//ma classe qui herite BroadcastReceiver


public class BroadcasterReceive extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)){
            NetworkInfo networkInfo=intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
            if(networkInfo.isAvailable()){
                notification("la Connexion wifi est activé",context);
            }else
            {
               
               Toast.makeText(context, "wifi desactive", Toast.LENGTH_SHORT).show();
            }

        }


    }




//ma fonction pour l'affichage de la notification


    private void notification(String message,Context context){
        Intent fullScreenIntent = new Intent(context,BroadcasterReceive.class);
        PendingIntent intent1=PendingIntent.getActivity(context,0,fullScreenIntent,PendingIntent.FLAG_UPDATE_CURRENT);
        NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
                .setSmallIcon(R.drawable.lettre)
                .setContentTitle(message)
                .setVibrate(new long[]{1000,1000,1000,1000,1000})
                .setLights(Color.BLUE,3000,3000)
                .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
                .setContentText("Nouvelle  Demande a ete envoyéé")
                .setPriority(NotificationCompat.PRIORITY_DEFAULT)
                .setFullScreenIntent(intent1,true)
                .setAutoCancel(true) ;
        Intent intent = new Intent(context, MainActivity9.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        PendingIntent pendingIntent=PendingIntent.getActivity(context,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
        builder.setContentIntent(pendingIntent);
        NotificationManager notificationManager=(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        Notification notification=builder.build();
        notificationManager.notify(0,builder.build());



    }
}



// le Code de mon receiver dans le manifest.

  <receiver android:name=".BroadcasterReceive"
            android:exported="false">
            <intent-filter>
                <action android:name="android.net.wifi.STATE_CHANGE"/>
            </intent-filter>
        </receiver>


Android / Chrome 64.0.3282.137

A voir également:

2 réponses

xHaMaz Messages postés 108 Date d'inscription mardi 3 janvier 2023 Statut Membre Dernière intervention 23 avril 2023 14
Modifié le 3 janv. 2023 à 09:07

Bonsoir, essaye de créer une classe "Service" et ajoute la méthode "onStartCommand" pour afficher la notification.

public class NotificationService extends Service {
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // Affichez la notification ici
        notification("la Connexion wifi est activé", this);
        return START_STICKY;
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

Modifie ton "BroadcastReceiver" pour déclencher le "Service" lorsque le WiFi est activé.

public class BroadcasterReceive extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)){
            NetworkInfo networkInfo=intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
            if(networkInfo.isAvailable()){
                // Déclenchez le Service ici
                Intent serviceIntent = new Intent(context, NotificationService.class);
                context.startService(serviceIntent);
            }else {
                Toast.makeText(context, "wifi desactive", Toast.LENGTH_SHORT).show();
            }
        }
    }

    private void notification(String message, Context context) {
        // Votre code de notification ici
    }
}

N'oublie pas de déclarer ton "Service" dans le fichier "AndroidManifest.xml"

<service android:name=".NotificationService"/>

Tiens moi au courant

0
Kaled269 Messages postés 3 Date d'inscription vendredi 23 décembre 2022 Statut Membre Dernière intervention 4 janvier 2023
4 janv. 2023 à 20:08

Tout D abord je tiens à vous remercier pour votre reponse .mais Enfait j ai fais exactement comme vous me  l' avez precisé là mais ça ne marche pas comme je le voulais car En utilisant le service ,il faut d abord que le Service soit lancer au moins une fois dans l' application et comme ça il continuera de fonctionner en Tâche de font mem en dehors de l application et cela mem apres sa fermeture dans la barre des taches.ce qui fait que si j'active le wifi en dehors de l'appli ,la notification viens mais cela est dû au fait que le service aussi est toujours actif ,,cela dit, après un certains moment  le cycle de vie du service est fini ,la notification ne viens pas,,c'est comme si mon BroadcaterReceiver ne fonctionner que si l'application est lancé ,or normalment mem sans utiliser un service ça devrait marché puisque les broadcasterReceiver reçoivent les emissions mem sans lancement de l' application,,alors ça devrait être le BroadcasterReceiver qui devrais faire en sorte que la notification s affiche et cela mem sans l'ouverture de l application .comme pour les notification whatsApp ,dès que y a une connexion reseau whatsapp envoie les messages envoyé ,il y a certainement une methode lié à un service prêt à envoyer des requettes aux serveur  une fois que y' a le reseau et cela en dehors mem de l'appli ,sans son ouverture ..alors je vous ecoute de m aidercar sans ça je ne pourrais pas avancer dans le projet que je fais.

0
Kaled269 Messages postés 3 Date d'inscription vendredi 23 décembre 2022 Statut Membre Dernière intervention 4 janvier 2023
Modifié le 4 janv. 2023 à 08:12

Tout D abord je tiens à vous remercier pour votre reponse .mais Enfait j ai fais exactement comme vous me  l' avez precisé là mais ça ne marche pas comme je le voulais car En utilisant le service ,il faut d abord que le Service soit lancer au moins une fois dans l' application et comme ça il continuera de fonctionner en Tâche de font mem en dehors de l application et cela mem apres sa fermeture dans la barre des taches.ce qui fait que si j'active le wifi en dehors de l'appli ,la notification viens mais cela est dû au fait que le service aussi est toujours actif ,,cela dit, après un certains moment  le cycle de vie du service est fini ,la notification ne viens pas,,c'est comme si mon BroadcaterReceiver ne fonctionner que si l'application est lancé ,or normalment mem sans utiliser un service ça devrait marché puisque les broadcasterReceiver reçoivent les emissions mem sans lancement de l' application,,alors ça devrait être le BroadcasterReceiver qui devrais faire en sorte que la notification s affiche et cela mem sans l'ouverture de l application .comme pour les notification whatsApp ,dès que y a une connexion reseau whatsapp envoie les messages envoyé ,il y a certainement une methode lié à un service prêt à envoyer des requettes aux serveur  une fois que y' a le reseau et cela en dehors mem de l'appli ,sans son ouverture ..alors je vous ecoute de m aidercar sans ça je ne pourrais pas avancer dans le projet que je fais.

0