- 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;
- }