Surveillance de diffusion connexion/déconnexion réseau Android

Il s’agit de la méthode d’implémentation pour l’ancienne API Android (Android 7 et versions antérieures), qui utilise un BroadcastReceiver + ConnectivityManager + NetworkInfo pour détecter la connexion et la déconnexion réseau.

1. Points clés

  1. ConnectivityManager : Classe de service système dédiée à la gestion de l’état de la connexion réseau.
  2. Autorisations : Vous devez ajouter l’autorisation d’état réseau dans AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Langage du code : HTML, XML (xml)
  1. Principe : Lorsque le réseau change, le système envoie une diffusion réseau. Dans le rappel onReceive de BroadcastReceiver, utilisez ConnectivityManager pour récupérer les informations réseau actuelles et déterminer si le réseau est connecté ou déconnecté.

2. Code complet de onReceive

public void onReceive(Context context, Intent intent) {
    // Obtenir le service système de gestion réseau
    ConnectivityManager connectivityManager =
            (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    // Récupérer les informations du réseau actif (API obsolète)
    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
    if (networkInfo != null) {
        if (networkInfo.isAvailable()) {
            Toast.makeText(context, "Réseau connecté", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(context, "Réseau déconnecté", Toast.LENGTH_LONG).show();
        }
    } else {
        // networkInfo vaut null : aucun réseau
        Toast.makeText(context, "Réseau déconnecté", Toast.LENGTH_LONG).show();
    }
}
Langage du code : JavaScript (javascript)

3. Avertissement important (obsolescence)

getActiveNetworkInfo() et NetworkInfo sont obsolètes depuis Android 10 (API29)

Les versions récentes d’Android recommandent d’utiliser la méthode de rappel ConnectivityManager.NetworkCallback pour surveiller le réseau. L’ancienne approche diffusion + NetworkInfo n’est plus conseillée.

Inconvénients de l’ancienne méthode

  1. Après Android 8.0 (API26), les diffusions d’état réseau enregistrées statiquement sont restreintes. L’enregistrement statique ne permet pas de recevoir les diffusions de changement réseau ; vous devez enregistrer le récepteur dynamiquement.
  2. La classe NetworkInfo est obsolète. Un appel direct sur les versions récentes déclenchera des avertissements, voire un échec.

4. Enregistrement dynamique du BroadcastReceiver

// Définir le récepteur de diffusion
public class NetReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Insérer ici le code de détection réseau ci-dessus
    }
}
// Enregistrement dynamique dans l'Activity
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
NetReceiver receiver = new NetReceiver();
registerReceiver(receiver, filter);
Langage du code : PHP (php)

Surveillance de diffusion connexion/déconnexion réseau Android

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *