Maison >Java >javaDidacticiel >Comment détecter les changements d'état du réseau et les événements hors ligne sur Android ?

Comment détecter les changements d'état du réseau et les événements hors ligne sur Android ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-24 19:51:02769parcourir

How to Detect Network Status Changes and Offline Events on Android?

Surveillance des changements d'état du réseau sur Android

Question : Comment puis-je détecter les changements d'état du réseau sur un Android appareil, en particulier lorsque le réseau est hors ligne ?

Pour capturer les changements d'état du réseau, Android fournit la classe BroadcastReceiver. La classe ConnectivityManager permet d'obtenir des informations sur la connexion réseau active.

Solution :

1. Créez une classe Java étendant BroadcastReceiver

<code class="java">public class ConnectionChangeReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
        NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

        if (activeNetInfo != null) {
            Toast.makeText(context, "Active Network Type: " + activeNetInfo.getTypeName(), Toast.LENGTH_SHORT).show();
        }

        if (mobNetInfo != null) {
            Toast.makeText(context, "Mobile Network Type: " + mobNetInfo.getTypeName(), Toast.LENGTH_SHORT).show();
        }
    }
}</code>

2. Ajoutez les autorisations nécessaires au AndroidManifest.xml

<code class="xml"><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /></code>

3. Enregistrez le BroadcastReceiver dans AndroidManifest.xml

<code class="xml"><receiver android:name="com.blackboard.androidtest.receiver.ConnectionChangeReceiver"
          android:label="NetworkConnection">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver></code>

4. Enregistrez le BroadcastReceiver dynamiquement (facultatif)

Si vous devez enregistrer le BroadcastReceiver dynamiquement dans votre code, vous pouvez utiliser l'approche suivante :

<code class="java">BroadcastReceiver receiver = new ConnectionChangeReceiver();
IntentFilter filter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
context.registerReceiver(receiver, filter);</code>

Ce code vous permettra de capturez les changements d’état du réseau et déterminez quand le réseau se déconnecte. Vous pouvez gérer l'événement en conséquence dans la logique de votre application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn