自定义一个网络判断工具类
public class NetWorkUtils {
public static boolean isNetWorkConnection(Context context) {
//获取网络状态管理者
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//得到网络状态信息
NetworkInfo info = manager.getActiveNetworkInfo();
if (info != null) {
return info.isAvailable();
}
return false;
}
public static boolean isMobile(Context context) {
//获取网络状态管理者
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//得到网络状态信息
NetworkInfo mobile = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (mobile != null) {
return mobile.isAvailable();
}
return false;
}
public static boolean isWifi(Context context) {
//获取网络状态管理者
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//得到网络状态信息
NetworkInfo wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (wifi != null) {
return wifi.isAvailable();
}
return false;
}
}
动态注册广播--监听网络状态--移动网络--WIFI
//网络判断---->注册广播---->MyBroadcastReceiver
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
getActivity().registerReceiver(receiver,intentFilter);
自定义内部类广播:
//定义广播监听网络状态
private class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
boolean netWorkConnection = NetWorkUtils.isNetWorkConnection(context);
//有网识别网络类型
if (netWorkConnection) {
//调用网络请求方法---在这可以写你需要的方法--有网络便执行
getHttpdata();
boolean wifi = NetWorkUtils.isWifi(context);
if (wifi) {
Toast.makeText(context, "wifi", Toast.LENGTH_SHORT).show();
}
boolean mobile = NetWorkUtils.isMobile(context);
if (mobile) {
Toast.makeText(context, "mobile", Toast.LENGTH_SHORT).show();
}
} else {//没网弹框--->设置网络提示
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("网络提示");
builder.setMessage("当前网络不可用,请设置网络");
//yes按钮
builder.setPositiveButton("设置", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//去设置网络界面
startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
}
});
//no按钮
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.show();
}
//不需要的时候取消注册
context.unregisterReceiver(this);
}
}