在工作中我們經常要用到網路,網路狀態的檢查必不可少,這是一個檢查當前網路狀態的工具類,直接粘過去就能用:
package com.todoo.android.app.utils;import java.net.InetAddress;import java.net.NetworkInterface;import java.net.SocketException;import java.util.Enumeration;import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;public class NetworkUtils{public static final String NET_TYPE_WIFI = "WIFI";public static final String NET_TYPE_MOBILE = "MOBILE";public static final String NET_TYPE_NO_NETWORK = "no_network";private Context mContext = null;public NetworkUtils(Context pContext) {this.mContext = pContext;}public static final String IP_DEFAULT = "0.0.0.0";public static boolean isConnectInternet(final Context pContext){final ConnectivityManager conManager = (ConnectivityManager) pContext.getSystemService(Context.CONNECTIVITY_SERVICE);final NetworkInfo networkInfo = conManager.getActiveNetworkInfo();if (networkInfo != null){return networkInfo.isAvailable();}return false;}public static boolean isConnectWifi(final Context pContext) {ConnectivityManager mConnectivity = (ConnectivityManager) pContext.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo info = mConnectivity.getActiveNetworkInfo();//判斷網路連接類型,只有在3G或wifi裡進行一些資料更新。 int netType = -1;if(info != null){netType = info.getType();}if (netType == ConnectivityManager.TYPE_WIFI) {return info.isConnected();} else {return false;}}public static String getNetTypeName(final int pNetType){switch (pNetType){case 0:return "unknown";case 1:return "GPRS";case 2:return "EDGE";case 3:return "UMTS";case 4:return "CDMA: Either IS95A or IS95B";case 5:return "EVDO revision 0";case 6:return "EVDO revision A";case 7:return "1xRTT";case 8:return "HSDPA";case 9:return "HSUPA";case 10:return "HSPA";case 11:return "iDen";case 12:return "EVDO revision B";case 13:return "LTE";case 14:return "eHRPD";case 15:return "HSPA+";default:return "unknown";}}public static String getIPAddress(){try{final Enumeration<NetworkInterface> networkInterfaceEnumeration = NetworkInterface.getNetworkInterfaces();while (networkInterfaceEnumeration.hasMoreElements()){final NetworkInterface networkInterface = networkInterfaceEnumeration.nextElement();final Enumeration<InetAddress> inetAddressEnumeration = networkInterface.getInetAddresses();while (inetAddressEnumeration.hasMoreElements()){final InetAddress inetAddress = inetAddressEnumeration.nextElement();if (!inetAddress.isLoopbackAddress()){return inetAddress.getHostAddress();}}}return NetworkUtils.IP_DEFAULT;}catch (final SocketException e){return NetworkUtils.IP_DEFAULT;}}public String getConnTypeName() {ConnectivityManager connectivityManager = (ConnectivityManager) this.mContext.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();if(networkInfo == null) {return NET_TYPE_NO_NETWORK;} else {return networkInfo.getTypeName();}}}
最後不要忘了加上許可權:<!--
擷取網路狀態的許可權 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />