下方是一個很好的監測網絡、狀態的工具類
public class NetworkUtils { /** * 網絡是否可用 * * @param activity * @return */ public static boolean isNetworkAvailable(Context context) { ConnectivityManager connectivity = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity == null) { } else { 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; } /** * Gps是否打開 * * @param context * @return */ public static boolean isGpsEnabled(Context context) { LocationManager locationManager = ((LocationManager) context .getSystemService(Context.LOCATION_SERVICE)); List<String> accessibleProviders = locationManager.getProviders(true); return accessibleProviders != null && accessibleProviders.size() > 0; } /** * wifi是否打開 */ 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); } /** * 判斷當前網絡是否是wifi網絡 * if(activeNetInfo.getType()==ConnectivityManager.TYPE_MOBILE) { * * @param context * @return boolean */ public static boolean isWifi(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); if (activeNetInfo != null && activeNetInfo.getType() == ConnectivityManager.TYPE_WIFI) { return true; } return false; } /** * 判斷當前網絡是否3G網絡 * * @param context * @return boolean */ public static boolean is3G(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); if (activeNetInfo != null && activeNetInfo.getType() == ConnectivityManager.TYPE_MOBILE) { return true; } return false; } }
以上方法均通過測試,tv_result為自設定的TextView。
tv_result.append("網絡是否可用:"+NetworkUtils.isNetworkAvailable(MainActivity.this)+"\n"); tv_result.append("GPS開關是否打開:"+NetworkUtils.isGpsEnabled(MainActivity.this)+"\n"); tv_result.append("是否為3G網絡:"+NetworkUtils.is3G(MainActivity.this)+"\n"); tv_result.append("WIFI是否打開:"+NetworkUtils.isWifiEnabled(MainActivity.this)+"\n"); tv_result.append("是否為WIFI網絡:"+NetworkUtils.isWifi(MainActivity.this)+"\n");