BroadcastReceiver lorsque le wifi ou l'état du réseau 3g a changé

J'ai commencé à développer une application qui mettra à jour la base de données chaque fois que le téléphone est connecté à WiFi. J'ai mis en place un Service et BroadcastReceiver qui exécutera le Service (il me dira ce que le réseau est utilisé), mais le problème est que je ne sais pas quoi ajouter dans le fichier manifeste pour démarrer BroadcastReceiver lorsque l'état du réseau change ou quand Il se connecte à une sorte de réseau

Je vous remercie.

  • Faible qualité d'image / image lors de la capture de la caméra
  • Erreur: JNI ERROR (bug de l'application): accès à la référence globale existante
  • Flux de couverture Android
  • Parse notifications sur Android ne fonctionnera pas
  • Définir une police personnalisée pour le texte dans PreferenceScreen
  • Code de réponse inattendue 403 pour https://www.googleapis.com/games/v1/players/1123xxxxxx11712506520 et autres erreurs de jeux-services
  • Comment désactiver le redémarrage automatique de l'application Android après un crash (Android 2.2)
  • Un périphérique ADB Android hors ligne, ne peut pas émettre de commandes
  • Android 2.1 Détecter Bluetooth audio connecter / déconnecter
  • Comment afficher l'icône appropriée sur la boîte de dialogue
  • Comment définir un espacement égal avec Android GridView?
  • Le champ de saisie du formulaire dans WebView ne présente pas de clavier doux
  • 3 Solutions collect form web for “BroadcastReceiver lorsque le wifi ou l'état du réseau 3g a changé”

    Vous voudrez

     <intent-filter> <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/> <action android:name="android.net.wifi.STATE_CHANGE"/> </intent-filter> 

    Dans votre étiquette de réception.

    Ou si vous voulez plus de contrôle, avant d'enregistrer BroadcastReceiver, configurez-les:

     final IntentFilter filters = new IntentFilter(); filters.addAction("android.net.wifi.WIFI_STATE_CHANGED"); filters.addAction("android.net.wifi.STATE_CHANGE"); super.registerReceiver(yourReceiver, filters); 

    WIFI_STATE_CHANGED

    Action d'intention de diffusion indiquant que Wi-Fi a été activé, désactivé, activé, désactivant ou inconnu. Un extra fournit cet état comme un int. Un autre extra fournit l'état précédent, si disponible.

    STATE_CHANGE

    Action d'intention de diffusion indiquant que l'état de la connectivité Wi-Fi a changé. Un extra fournit le nouvel état sous la forme d'un objet NetworkInfo. Si le nouvel état est CONNECTÉ, des extras supplémentaires peuvent fournir le BSSID et WifiInfo du point d'accès. Comme une chaîne

    De plus, vous devrez spécifier les bonnes autorisations dans la balise "manifeste":

     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

    Pour vérifier la connectivité, vous pouvez utiliser ConnectivityManager car il vous indique quel type de connexion est disponible.

     ConnectivityManager conMngr = (ConnectivityManager)this.getSystemService(this.CONNECTIVITY_SERVICE); android.net.NetworkInfo wifi = conMngr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); android.net.NetworkInfo mobile = conMngr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

    C'est ce que je fais pour être averti lorsque la connexion a changé. Vous définissez un BroadCastReceiver pour recevoir la diffusion.

     public class NetworkChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); boolean isConnected = wifi != null && wifi.isConnectedOrConnecting() || mobile != null && mobile.isConnectedOrConnecting(); if (isConnected) { Log.d("Network Available ", "YES"); } else { Log.d("Network Available ", "NO"); } }} 

    Vous devez également définir ce BroadCast dans votre manifeste et filtrer par ConnectivityChange.

     <receiver android:name=".NetworkChangeReceiver" > <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> 

    Source ici

    Vous devez faire un BroadcastReceiver qui sera déclenché lorsque l'état de la connectivité a changé:

    Voici la même question Comment vérifier périodiquement la connexion Internet dans une application complète?

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.