Android でのネットワーク ステータスの変化の監視
質問: Android でネットワーク ステータスの変化を検出するにはどうすればよいですか?
ネットワーク ステータスの変化をキャプチャするために、Android は BroadcastReceiver クラスを提供します。 ConnectivityManager クラスを使用すると、アクティブなネットワーク接続に関する情報を取得できます。
解決策:
1. 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 を拡張する Java クラスを作成します。 AndroidManifest.xml
<code class="xml"><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /></code>
3 に必要な権限を追加します。 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.にBroadcastReceiverを登録します。 BroadcastReceiver を動的に登録する (オプション)
コード内で BroadcastReceiver を動的に登録する必要がある場合は、次のアプローチを使用できます。
<code class="java">BroadcastReceiver receiver = new ConnectionChangeReceiver(); IntentFilter filter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE"); context.registerReceiver(receiver, filter);</code>
このコードにより、次のことが可能になります。ネットワークステータスの変化をキャプチャし、ネットワークがいつオフラインになるかを判断します。アプリケーション ロジックでイベントを適切に処理できます。
以上がAndroid でネットワーク ステータスの変化とオフライン イベントを検出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。