public class NetworkUtil {
/**
* 檢查網絡是否連接
*
* @param context 全局context
* @return true 已連接 false 未連接
*/
public static Boolean checkNetworkConnect(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
if (mNetworkInfo != null) {
return mNetworkInfo.isAvailable();
}
}
return false;
}
/**
* 獲取當前的網絡狀態
*
* @param context 全局context
* @return 沒有網絡-NO
* WIFI網絡-WIFI
* 4G網絡-4G
* 3G網絡-3G
* 2G網絡-2G
* 未知-Unknown
*/
public static String getAPNType(Context context) {
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
if (networkInfo == null) { //無網絡
return "NO";
}
int nType = networkInfo.getType();
if (nType == ConnectivityManager.TYPE_WIFI) { //wifi
return "WIFI";
} else if (nType == ConnectivityManager.TYPE_MOBILE) {
int nSubType = networkInfo.getSubtype();
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if (nSubType == TelephonyManager.NETWORK_TYPE_LTE
&& !telephonyManager.isNetworkRoaming()) {
return "4G";
} else if (nSubType == TelephonyManager.NETWORK_TYPE_UMTS
|| nSubType == TelephonyManager.NETWORK_TYPE_EVDO_0
|| nSubType == TelephonyManager.NETWORK_TYPE_EVDO_A
|| nSubType == TelephonyManager.NETWORK_TYPE_HSDPA
|| nSubType == TelephonyManager.NETWORK_TYPE_HSUPA
|| nSubType == TelephonyManager.NETWORK_TYPE_HSPA
|| nSubType == TelephonyManager.NETWORK_TYPE_EVDO_B
|| nSubType == TelephonyManager.NETWORK_TYPE_EHRPD
|| nSubType == TelephonyManager.NETWORK_TYPE_HSPAP
&& !telephonyManager.isNetworkRoaming()) {
return "3G";
} else if (nSubType == TelephonyManager.NETWORK_TYPE_GPRS
|| nSubType == TelephonyManager.NETWORK_TYPE_EDGE
|| nSubType == TelephonyManager.NETWORK_TYPE_CDMA
|| nSubType == TelephonyManager.NETWORK_TYPE_1xRTT
|| nSubType == TelephonyManager.NETWORK_TYPE_IDEN
&& !telephonyManager.isNetworkRoaming()) {
return "2G";
} else {
return "Unknown";
}
}
return "Unknown";
}
}
NetworkUtil
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.