监听手机网络状态变化使用ConnectivtiyManager类,可以获取网络状态,并在网络状态改变的时候发送广播。
代码:
/*
* 自定义接收器
*/
public class MyNetStatusReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
//获取移动网连接状态
NetworkInfo mobileNetworkInfo = connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
//获取wifi连接状态
NetworkInfo wifiNetworkInfo = connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (!mobileNetworkInfo.isConnected() && !wifiNetworkInfo.isConnected()) {
// 如果没有网络连接
new AlertDialog.Builder(context).setTitle("网络错误")
.setMessage("网络连接失败,请确认网络连接")
.setPositiveButton("知道了", null).setCancelable(true).show();
} else {
new AlertDialog.Builder(context).setTitle("网络连接")
.setMessage("网络连接成功").setPositiveButton("知道了", null)
.setCancelable(true).show();
}
}
}
在要调用的界面注册监听器:
/*
* 注册网络变化广播接收器
*/
private void receiveNetChanged() {
IntentFilter intentFilter = new IntentFilter(
ConnectivityManager.CONNECTIVITY_ACTION);
receiver = new MyNetStatusReceiver();
this.registerReceiver(receiver, intentFilter);
}
效果图: