直接上代碼,沒有什麼好說的!
package mark.zhang;import java.util.List;import android.content.Context;import android.location.LocationManager;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.telephony.TelephonyManager;public class NetworkProber {/** * 網路是否可用 * * @param activity * @return */public static boolean isNetworkAvailable(Context context) {ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);if (connectivity == null) {} else {NetworkInfo[] info = connectivity.getAllNetworkInfo();if (info != null) {for (int i = 0; i < info.length; i++) {if (info[i].getState() == NetworkInfo.State.CONNECTED) {return true;}}}}return false;}/** * Gps是否開啟 * * @param context * @return */public static boolean isGpsEnabled(Context context) {LocationManager locationManager = ((LocationManager) context.getSystemService(Context.LOCATION_SERVICE));List<String> accessibleProviders = locationManager.getProviders(true);return accessibleProviders != null && accessibleProviders.size() > 0;}/** * wifi是否開啟 */public static boolean isWifiEnabled(Context context) {ConnectivityManager mgrConn = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);TelephonyManager mgrTel = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);return ((mgrConn.getActiveNetworkInfo() != null && mgrConn.getActiveNetworkInfo().getState() == NetworkInfo.State.CONNECTED) || mgrTel.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS);}/** * 判斷當前網路是否是wifi網路 * if(activeNetInfo.getType()==ConnectivityManager.TYPE_MOBILE) { //判斷3G網 * * @param context * @return boolean */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;}/** * 判斷當前網路是否是3G網路 * * @param context * @return boolean */public static boolean is3G(Context context) {ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();if (activeNetInfo != null&& activeNetInfo.getType() == ConnectivityManager.TYPE_MOBILE) {return true;}return false;}}
另外還有兩個方法判斷網路是否可用:
public static boolean isNetworkAvailable_00(Context context) {ConnectivityManager cm = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));if (cm != null) {NetworkInfo info = cm.getActiveNetworkInfo();if (info != null && info.isConnectedOrConnecting()) {return true;}}return false;}public static boolean isNetworkAvailable_01(Context context) {ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo network = cm.getActiveNetworkInfo();if (network != null) {return network.isAvailable();}return false;}
更加嚴謹的寫法:
public static boolean checkNet(Context context) {try {ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);if (connectivity != null) {NetworkInfo info = connectivity.getActiveNetworkInfo();if (info != null && info.isConnected()) {if (info.getState() == NetworkInfo.State.CONNECTED) {return true;}}}} catch (Exception e) {return false;}return false;}