安卓 新版本 获取wifi状态网络是否可用等

来源:互联网 发布:狗扑源码 编辑:程序博客网 时间:2024/04/28 22:09

写下这篇文章目的:当我学习的和百度看看如何获取网络状态 发现都是一些比较老的方法 API23已结过时 所以在此写下记录 ,我不明白国内为什么那么少

那么我们来看看旧方法

package com.chengxinet.bobo.utils;import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.telephony.TelephonyManager;/** * Created by Administrator on 2016/1/7. */public class NetworkUtils {  public static boolean isNetworkAvailable(Context c) {    Context context = c.getApplicationContext();    // 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理)    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);    if (connectivityManager == null) {      return false;    } else {      // 获取NetworkInfo对象      NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();      if (networkInfo != null && networkInfo.length > 0) {        for (NetworkInfo aNetworkInfo : networkInfo) {//          System.out.println(i + "===状态===" + networkInfo[i].getState());//          System.out.println(i + "===类型===" + networkInfo[i].getTypeName());          // 判断当前网络状态是否为连接状态          if (aNetworkInfo.getState() == NetworkInfo.State.CONNECTED) {            return true;          }        }      }    }    return false;  }  /**   * 判断WIFI是否打开   * @param context   * @return   */  public static boolean isWifiEnabled(Context context) {    ConnectivityManager mgrConn = (ConnectivityManager) context        .getSystemService(Context.CONNECTIVITY_SERVICE);    TelephonyManager mgrTel = (TelephonyManager) context        .getSystemService(Context.TELEPHONY_SERVICE);    return ((mgrConn.getActiveNetworkInfo() != null && mgrConn        .getActiveNetworkInfo().getState() == NetworkInfo.State.CONNECTED) || mgrTel        .getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS);  }  /**   * 判断是否是3G网络   * @param context   * @return   */  public static boolean is3rd(Context context) {    ConnectivityManager cm = (ConnectivityManager) context        .getSystemService(Context.CONNECTIVITY_SERVICE);    NetworkInfo networkINfo = cm.getActiveNetworkInfo();    if (networkINfo != null        && networkINfo.getType() == ConnectivityManager.TYPE_MOBILE) {      return true;    }    return false;  }  /**   * 判断是wifi还是3g网络   * @param context   * @return   */  public static boolean isWifi(Context context) {    ConnectivityManager cm = (ConnectivityManager) context        .getSystemService(Context.CONNECTIVITY_SERVICE);    NetworkInfo networkINfo = cm.getActiveNetworkInfo();    if (networkINfo != null        && networkINfo.getType() == ConnectivityManager.TYPE_WIFI) {      return true;    }    return false;  }}

来看看新方法吧

public class ConnectionDetector {private Context _context;public ConnectionDetector(Context context) {    this._context = context;}public boolean isConnectingToInternet() {    ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {        Network[] networks = connectivity.getAllNetworks();        NetworkInfo networkInfo;        for (Network mNetwork : networks) {            networkInfo = connectivity.getNetworkInfo(mNetwork);            if (networkInfo.getState().equals(NetworkInfo.State.CONNECTED)) {                return true;            }        }    } else {        if (connectivity != null) {            NetworkInfo[] info = connectivity.getAllNetworkInfo();            if (info != null)                for (int i = 0; i < info.length; i++) {                    if (info[i].getState() == NetworkInfo.State.CONNECTED) {                        return true;                    }                }        }    }    return false;}}
0 0