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+NetworkInfopour détecter la connexion et la déconnexion réseau.
1. Points clés
- ConnectivityManager : Classe de service système dédiée à la gestion de l’état de la connexion réseau.
- 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)
- Principe : Lorsque le réseau change, le système envoie une diffusion réseau. Dans le rappel
onReceivedeBroadcastReceiver, utilisezConnectivityManagerpour 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.NetworkCallbackpour surveiller le réseau. L’ancienne approche diffusion + NetworkInfo n’est plus conseillée.
Inconvénients de l’ancienne méthode
- 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.
- La classe
NetworkInfoest 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