package forezp.com.douyalibrary.utils;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.telephony.TelephonyManager;
/**
* 网络是否可用、网络种类
* 联网工具类
* Created by b508a on 2015/12/28.
*/
public class NetUtils {
/**
* 检查是否有网络
* @param context
* @return
*/
public static boolean checkNetWorkIsAvailable(Context context) {
ConnectivityManager cwjManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cwjManager.getActiveNetworkInfo() != null)
return true;
else
return false;
}
/**
* Cmwap网络是否已连接
*
* @param context
* @return
*/
public static boolean isNetworkConnectedByCmwap(Context context) {
NetworkInfo networkInfo = ((ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE))
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
return networkInfo != null && networkInfo.isConnected()
&& networkInfo.getExtraInfo() != null
&& networkInfo.getExtraInfo().toLowerCase().contains("cmwap");
}
/**
* 连接的是否是2G网络
*
* @param context
* @return
*/
public static boolean isNetworkConnectedBy2G(Context context) {
NetworkInfo networkInfo = ((ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE))
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (networkInfo != null && networkInfo.isConnected()) {
int subtype = networkInfo.getSubtype();
if (subtype == TelephonyManager.NETWORK_TYPE_GPRS
|| subtype == TelephonyManager.NETWORK_TYPE_EDGE
|| subtype == TelephonyManager.NETWORK_TYPE_CDMA) {// 移动和联通2G
return true;
}
}
return false;
}
/**
* 连接的是否是3G网络
*
* @param context
* @return
*/
public static boolean isNetworkConnectedBy3G(Context context) {
NetworkInfo networkInfo = ((ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE))
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (networkInfo != null && networkInfo.isConnected()) {
int subtype = networkInfo.getSubtype();
if (subtype == TelephonyManager.NETWORK_TYPE_EVDO_A
|| subtype == TelephonyManager.NETWORK_TYPE_EVDO_0
|| subtype == TelephonyManager.NETWORK_TYPE_UMTS
|| subtype == TelephonyManager.NETWORK_TYPE_HSPA) {// 电信或联通3G
return true;
}
}
return false;
}
/**
* Wifi网络是否已连接
*
* @param context
* @return
*/
public static boolean isNetworkConnectedByWifi(Context context) {
NetworkInfo networkInfo = ((ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE))
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
return networkInfo != null && networkInfo.isConnected();
}
/**
* 网络是否已连接
*
* @param context
* @return
*/
public static boolean isNetworkConnected(Context context) {
try {
NetworkInfo networkInfo = ((ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE))
.getActiveNetworkInfo();
return networkInfo != null && networkInfo.isConnected();
} catch (NullPointerException e) {
e.printStackTrace();
return false;
}
}
}