package edu.hebtu.movingcampus.utils;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.telephony.TelephonyManager;
import android.util.Log;
public class NetWorkHelper {
private static String LOG_TAG = "NetWorkHelper";
public static Uri uri = Uri.parse("content://telephony/carriers");
/**
* 判断是否有网络连接
*/
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity == null) {
LogUtil.w(LOG_TAG, "couldn't get connectivity manager");
} else {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].isAvailable()) {
LogUtil.d(LOG_TAG, "network is available");
return true;
}
}
}
}
LogUtil.d(LOG_TAG, "network is not available");
return false;
}
public static int TYPE_WIFI = 1;
public static int TYPE_MOBILE = 2;
public static int TYPE_NOT_CONNECTED = 0;
public static int getConnectivityStatus(Context context) {
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (null != activeNetwork) {
if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI)
return TYPE_WIFI;
if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE)
return TYPE_MOBILE;
}
return TYPE_NOT_CONNECTED;
}
public static String getConnectivityStatusString(Context context) {
int conn = NetWorkHelper.getConnectivityStatus(context);
String status = null;
if (conn == NetWorkHelper.TYPE_WIFI) {
status = "Wifi enabled";
} else if (conn == NetWorkHelper.TYPE_MOBILE) {
status = "Mobile data enabled";
} else if (conn == NetWorkHelper.TYPE_NOT_CONNECTED) {
status = "Not connected to Internet";
}
return status;
}
public static boolean checkNetState(Context context) {
boolean netstate = false;
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
netstate = true;
break;
}
}
}
}
return netstate;
}
/**
* 判断网络是否为漫游
*/
public static boolean isNetworkRoaming(Context context) {
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity == null) {
LogUtil.w(LOG_TAG, "couldn't get connectivity manager");
} else {
NetworkInfo info = connectivity.getActiveNetworkInfo();
if (info != null
&& info.getType() == ConnectivityManager.TYPE_MOBILE) {
TelephonyManager tm = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
if (tm != null && tm.isNetworkRoaming()) {
LogUtil.d(LOG_TAG, "network is roaming");
return true;
} else {
LogUtil.d(LOG_TAG, "network is not roaming");
}
} else {
LogUtil.d(LOG_TAG, "not using mobile network");
}
}
return false;
}
/**
* 判断MOBILE网络是否可用
*
* @param context
* @return
* @throws Exception
*/
public static boolean isMobileDataEnable(Context context) throws Exception {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
boolean isMobileDataEnable = false;
isMobileDataEnable = connectivityManager.getNetworkInfo(
ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();
return isMobileDataEnable;
}
/**
* 判断wifi 是否可用
*
* @param context
* @return
* @throws Exception
*/
public static boolean isWifiDataEnable(Context context) throws Exception {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
boolean isWifiDataEnable = false;
isWifiDataEnable = connectivityManager.getNetworkInfo(
ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
return isWifiDataEnable;
}
/**
* 设置Mobile网络开关
*
* @param context
* @param enabled
* @throws Exception
*/
public static void setMobileDataEnabled(Context context, boolean enabled)
throws Exception {
APNManager apnManager = APNManager.getInstance(context);
List<APN> list = apnManager.getAPNList();
if (enabled) {
for (APN apn : list) {
ContentValues cv = new ContentValues();
cv.put("apn", apnManager.matchAPN(apn.apn));
cv.put("type", apnManager.matchAPN(apn.type));
context.getContentResolver().update(uri, cv, "_id=?",
new String[] { apn.apnId });
}
} else {
for (APN apn : list) {
ContentValues cv = new ContentValues();
cv.put("apn", apnManager.matchAPN(apn.apn) + "mdev");
cv.put("type", apnManager.matchAPN(apn.type) + "mdev");
context.getContentResolver().update(uri, cv, "_id=?",
new String[] { apn.apnId });
}
}
}
}