package com.tal.jxtteacher.http;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Build;
import android.telephony.TelephonyManager;
public class NetWorkUtil {
/**
* 網絡連接是否可用
*/
public static boolean isNetworkAvailable(Context ctx) {
ConnectivityManager connectivity = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity == null) {
return false;
} else {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED || info[i].getState() == NetworkInfo.State.CONNECTING) {
return true;
}
}
}
}
return false;
}
/**
* 檢查網絡類型
*
* @return
*/
public static boolean checkNetworkType(Context ctx) {
ConnectivityManager cm = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm == null) {
return false;
}
NetworkInfo.State mobile = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
NetworkInfo.State wifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING) {
System.out.println("手機網絡");
return true;
}
if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) {
System.out.println("WIFI");
return true;
}
return false;
}
/**
* 手機網絡
*/
public static boolean isMobileNetwork(Context ctx) {
ConnectivityManager cm = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm == null) {
return false;
}
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
return true;
}
return false;
}
/**
* wifi網絡
*/
public static boolean isWifiNetwork(Context ctx) {
ConnectivityManager cm = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm == null) {
return false;
}
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
return true;
}
return false;
}
/**
* 跳轉去網絡設置頁面
*/
public static void startNetworkSettingActivity(Context ctx) {
Intent intent = new Intent();
int sdkVersion = Build.VERSION.SDK_INT;
if (sdkVersion >= 14) {
intent = new Intent(android.provider.Settings.ACTION_SETTINGS);
} else {
// android4.0系統找不到此Activity
intent.setClassName("com.android.settings", "com.android.settings.WirelessSettings");
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ctx.startActivity(intent);
}
/**
* 檢測當前打開的網絡類型是否WIFI
*
* @param context 上下文
* @return 是否是Wifi上網
*/
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;
}
/**
* 是否有網
*/
public static boolean isConnected(Context context) {
return netSatus(context) != NetState.NET_NO;
}
/**
* 枚舉網絡狀態 NET_NO:沒有網絡 NET_2G:2g網絡 NET_3G:3g網絡 NET_4G:4g網絡 NET_WIFI:wifi
* NET_UNKNOWN:未知網絡
*/
public static enum NetState {
NET_NO, NET_2G, NET_3G, NET_4G, NET_WIFI, NET_UNKNOWN
}
/**
* 判斷當前是否網絡連接
*
* @param context 上下文
* @return 狀態碼
*/
public static NetState netSatus(Context context) {
NetState stateCode = NetState.NET_NO;
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni != null && ni.isConnectedOrConnecting()) {
switch (ni.getType()) {
case ConnectivityManager.TYPE_WIFI:
stateCode = NetState.NET_WIFI;
break;
case ConnectivityManager.TYPE_MOBILE:
switch (ni.getSubtype()) {
case TelephonyManager.NETWORK_TYPE_GPRS: // 聯通2g
case TelephonyManager.NETWORK_TYPE_CDMA: // 電信2g
case TelephonyManager.NETWORK_TYPE_EDGE: // 移動2g
case TelephonyManager.NETWORK_TYPE_1xRTT:
case TelephonyManager.NETWORK_TYPE_IDEN:
stateCode = NetState.NET_2G;
break;
case TelephonyManager.NETWORK_TYPE_EVDO_A: // 電信3g
case TelephonyManager.NETWORK_TYPE_UMTS:
case TelephonyManager.NETWORK_TYPE_EVDO_0:
case TelephonyManager.NETWORK_TYPE_HSDPA:
case TelephonyManager.NETWORK_TYPE_HSUPA:
case TelephonyManager.NETWORK_TYPE_HSPA:
case TelephonyManager.NETWORK_TYPE_EVDO_B:
case TelephonyManager.NETWORK_TYPE_EHRPD:
case TelephonyManager.NETWORK_TYPE_HSPAP:
stateCode = NetState.NET_3G;
break;
case TelephonyManager.NETWORK_TYPE_LTE:
stateCode = NetState.NET_4G;
break;
default:
stateCode = NetState.NET_UNKNOWN;
}
break;
default:
stateCode = NetState.NET_UNKNOWN;
}
}
return stateCode;
}
}