Maison >Java >javaDidacticiel >Comment puis-je créer un écouteur de changement de connectivité Internet fiable sous Android ?
Écouteur de changement de connectivité Internet dans Android
Le récepteur de diffusion par défaut pour les changements de connectivité surveille la disponibilité du réseau mais pas nécessairement la connectivité Internet. Pour remédier à cette limitation, explorons une approche plus complète.
Surveillance de la connectivité Internet
Utilisez la classe d'utilitaire suivante pour déterminer l'état actuel de la connexion Internet :
<code class="java">public class NetworkUtil { public static int getConnectivityStatus(Context context) { // Check for active network ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); // Determine network type (Wi-Fi, mobile, or not connected) if (activeNetwork != null) { if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) { return TYPE_WIFI; } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) { return TYPE_MOBILE; } } return TYPE_NOT_CONNECTED; } // Convert network status to string representation (Wi-Fi, mobile, or not connected) public static int getConnectivityStatusString(Context context) { int conn = NetworkUtil.getConnectivityStatus(context); int status = 0; if (conn == NetworkUtil.TYPE_WIFI) { status = NETWORK_STATUS_WIFI; } else if (conn == NetworkUtil.TYPE_MOBILE) { status = NETWORK_STATUS_MOBILE; } else if (conn == NetworkUtil.TYPE_NOT_CONNECTED) { status = NETWORK_STATUS_NOT_CONNECTED; } return status; } }</code>
Récepteur de diffusion pour les modifications de connectivité Internet
Créez un récepteur de diffusion qui écoute les modifications de connectivité Internet :
<code class="java">public class NetworkChangeReceiver extends BroadcastReceiver { @Override public void onReceive(final Context context, final Intent intent) { int status = NetworkUtil.getConnectivityStatusString(context); if ("android.net.conn.CONNECTIVITY_CHANGE".equals(intent.getAction())) { if (status == NetworkUtil.NETWORK_STATUS_NOT_CONNECTED) { // Handle loss of Internet connection } else { // Handle recovery of Internet connection } } } }</code>
Configuration AndroidManifest.xml
Déclarez le récepteur de diffusion et les autorisations nécessaires dans AndroidManifest.xml :
<code class="xml"><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <receiver android:name="NetworkChangeReceiver" android:label="NetworkChangeReceiver" > <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <action android:name="android.net.wifi.WIFI_STATE_CHANGED" /> </intent-filter> </receiver></code>
En mettant en œuvre cette approche, vous pouvez surveiller les changements de connectivité Internet et réagir en conséquence, garantissant ainsi la stabilité du Web fonctionnalité de l'application dans des scénarios de perte soudaine de connectivité Internet.
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!