package com.yikdata.main.yikdata.network;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.provider.Settings;
import android.telephony.TelephonyManager;
/**
* ClassName:NetWorkUtil Description:是检测网络的一个工具包 Author:KevinLee Date:2015/8/10
* 0010 Time:下午 3:44
*/
public class NetWorkUtil {
/**
* 网络是否可用
*
* @param context
* @return
*/
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager mgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] info = mgr.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
return false;
}
/**
* 判断是否有网络连接
*
* @param context
* @return
*/
public static boolean isNetworkConnected(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;
}
/**
* 判断WIFI网络是否可用
*
* @param context
* @return
*/
public static boolean isWifiConnected(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWiFiNetworkInfo = mConnectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (mWiFiNetworkInfo != null) {
return mWiFiNetworkInfo.isAvailable();
}
}
return false;
}
/**
* 判断MOBILE网络是否可用
*
* @param context
* @return
*/
public static boolean isMobileConnected(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mMobileNetworkInfo = mConnectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (mMobileNetworkInfo != null) {
return mMobileNetworkInfo.isAvailable();
}
}
return false;
}
/**
* 获取运营商名字
*/
public static String getOperatorName(Context context) {
String operatorName = null;
TelephonyManager telephonyManager = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
String operator = telephonyManager.getSimOperator();
if (operator != null) {
if (operator.equals("46000") || operator.equals("46002")) {
operatorName = "中国移动";
} else if (operator.equals("46001")) {
operatorName = "中国联通";
} else if (operator.equals("46003")) {
operatorName = "中国电信";
}
} else {
operatorName = "无sim卡";
}
return operatorName;
}
/**
* 获取网络类型
*
* @return
*/
public static String getNetworkCategory(Context context) {
String category = null;
NetState state = isConnected(context);
switch (state) {
case NET_NO:
category = "没有网络连接";
break;
case NET_2G:
category = "2g网络";
break;
case NET_3G:
category = "3g网络";
break;
case NET_4G:
category = "4g网络";
break;
case NET_WIFI:
category = "WIFI网络";
break;
case NET_UNKNOWN:
category = "未知网络";
break;
default:
category = "不知道什么情况~>_<~";
}
return category;
}
/**
* 判断当前是否网络连接,以及连接的网络的类型
*
* @param context
* @return 状态码
*/
public static NetState isConnected(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;
}
/**
* 打开网络设置界面
*/
public static void openSetting(Context context) {
// 跳转到系统的网络设置界面
Intent intent = null;
// 先判断当前系统版本
if (android.os.Build.VERSION.SDK_INT > 10) { // 3.0以上
intent = new Intent(Settings.ACTION_WIRELESS_SETTINGS);
} else {
intent = new Intent();
intent.setClassName("com.android.settings",
"com.android.settings.WirelessSettings");
}
context.startActivity(intent);
}
}