Android 提供了获取底层网络状态的方法。其原理是通过广播intent来通知应用程序组件网络连接发生变化,并提供了对网络设置和连接的控制。
方法1:android系统通过ConnectivityManager类提供了一个系统服务,使开发者能够监视网络连接状态,设置首选网络,管理连接故障等。初始化该服务的语句如下所示:
ConnectivityManager mConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
要使用它需要在AndroidManifest.xml文件中添加相应权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
判断的网络是否连接:
boolean wifi=mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
boolean internet=mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();
判断是否连接的方法:
public boolean isNetworkAvailable()
{
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
// if no network is available networkInfo will be null, otherwise check
// if we are connected
if (networkInfo != null && networkInfo.isConnected())
{
return true;
}
return false;
}
方法2:创建一个广播接收器
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
Bundle bundle = intent.getExtras();
NetworkInfo aNetworkInfo = (NetworkInfo) bundle
.get(ConnectivityManager.EXTRA_NETWORK_INFO);
if (aNetworkInfo.isConnected())
{
System.out.println("network normal");
} else
{
System.out.println("network problem");
}
}
};
然后注册监听ConnectivityManager.CONNECTIVITY_ACTION
this.registerReceiver(mBroadcastReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
上面定义的广播接收器只接受来自于ConnectivityManager.EXTRA_NETWORK_INFO的NetworkInfo对象。