Comment utiliser un BroadcasterReceive sur androidStudio !
Kaled269 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
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
- Comment utiliser un BroadcasterReceive sur androidStudio !
- Comment utiliser chromecast sur tv - Guide
- Utiliser iphone comme webcam - Guide
- Comment utiliser utorrent - Télécharger - Téléchargement & Transfert
- Comment utiliser wetransfer - Guide
- Comment utiliser teamviewer - Guide
2 réponses
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
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.
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.