次のように宣言された BroadcastReceiver クラスがある場合:
public class NetConnectionBroadcastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
final ConnectivityManager cm = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo == null)
Log.v("CONNECT", "NOT CONNECTED");
int netType = networkInfo.getType();
if (netType == ConnectivityManager.TYPE_WIFI)
{
Log.v("CONNECT", "CONNECTED TO WIFI");
}
else if (netType == ConnectivityManager.TYPE_MOBILE)
{
Log.v("CONNECT", "CONNECTED TO MOBILE" +
(networkInfo.isRoaming() ? " ROAMING!" : ""));
}
}
}
そのインスタンスをアクティビティ内に保存でき、イベントonCreate
の場合はメソッドに登録できます。android.net.conn.CONNECTIVITY_CHANGE
private final NetConnectionBroadcastReceiver receiver =
new NetConnectionBroadcastReceiver();
public void onCreate(Bundle savedInstanceState)
{
// ... your onCreate implementation goes here
final IntentFilter intentFilter =
new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
this.registerReceiver(this.receiver, intentFilter);
}
データ接続が変更されると、受信側のonReceive
メソッドが呼び出されます。どのような変化が起こったのか、内側から調べることができます。
このチェックでは、android.permission.ACCESS_NETWORK_STATE
パーミッション以外は必要ありません。