ACCESS_NETWORK_STATE
の権限が必要なのでマニフェスト(AndroidManifest.xml)でパーミッションの追加をおこないます。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
次にマニフェストにレシーバーの設定をおこないます。android.net.conn.CONNECTIVITY_CHANGE
を拾えるようにします。
<receiver android:name=".ConnectivityReceiver" > <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> </receiver>
BroadcastReceiver
を継承したConnectivityReceiverという名前の接続状態の変化を受け取るレシーバークラスを実装します。
package jp.ch3cooh.samples; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; /** * 接続状態の変化を受け取るレシーバークラス */ public class ConnectivityReceiver extends BroadcastReceiver { private static final String TAG = ConnectivityReceiver.class.getSimpleName(); @Override public void onReceive(Context context, Intent intent) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = cm.getActiveNetworkInfo(); boolean isConnected = (networkInfo != null && networkInfo.isConnected()); if (isConnected) { // 接続状態 } else { // 切断状態 } } }