Maison >Java >javaDidacticiel >Comment détecter les changements d'état du réseau et les événements hors ligne sur 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!