……
class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectionManager = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfonetworkInfo=connectionManager.getActiveNetworkInfo();
if (networkInfo !=null && networkInfo.isAvailable()) {
Toast.makeText(context, "network is available",
Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(context, "network is unavailable",
Toast.LENGTH_SHORT).show();
}
}
}
}
在onReceive()方法中,首先通过getSystemService()方法得到了ConnectivityManager的 实例,这是一个系统服务类,专门用于管理网络连接的。然后调用getActiveNetworkInfo()
方法可以得到NetworkInfo的实例,接着调用NetworkInfo的isAvailable()方法,就可以判断 出当前是否有网络了.
里面几个常用函数
isAvailable() isConnected() getDetailedState() getState() getExtrInfo()
getType() 获取当前网络的类型mobile or Wi-Fi
getTypeName() 获取当前网络的类型名 “WIFI” or “MOBILE”
ConnectivityManager
用于查询网络连接状态,当网络状态发生改变时通知应用。通过调用Context.getSystemService(Context.CONNECTIVITY_SERVICE)。主要功能:
1. 监视网络(Wi-Fi,GPRS,UMTS,etc)的连接
2. 网络状态发生改变时发送广播
3. 网络丢失时尝试转移的别的网络
4. 提供API
主要函数介绍
1. NetworkInfo getActiveNetworkInfo() 获取可用网络
2. NetworkInfo[] getAllNetworkInfo 获取所有可用网络
3. NetworkInfo getNetworkInfo(int networkType) 获取固定网络信息
4. isNetworkTypeValid(int networkType)