zoukankan      html  css  js  c++  java
  • android 判断网络状态

    android 判断网络状态


    package com.example.android;
    
    import java.io.IOException;
    import java.net.HttpURLConnection;
    import java.net.InetAddress;
    import java.net.NetworkInterface;
    import java.net.SocketException;
    import java.net.URL;
    import java.util.Enumeration;
    
    import android.content.Context;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.telephony.TelephonyManager;
    
    public class NetStatus {
    
        public static int NET_CNNT_BAIDU_OK = 1; // 正常访问因特网状态
        public static int NET_CNNT_BAIDU_TIMEOUT = 2; // 无法访问因特网状态
        public static int NET_NOT_PREPARE = 3; // 网络未准备好
        public static int NET_ERROR = 4;
        private static int TIMEOUT = 3000;
    
        /**
         * 返回当前网络状态
         * 
         * @param context
         * @return
         */
        public static int getNetState(Context context) {
    	try {
    	    ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    	    if (connectivity != null) {
    		NetworkInfo networkinfo = connectivity.getActiveNetworkInfo();
    		if (networkinfo != null) {
    		    if (networkinfo.isAvailable() && networkinfo.isConnected()) {
    			if (!connectionNetwork())
    			    return NET_CNNT_BAIDU_TIMEOUT;
    			else
    			    return NET_CNNT_BAIDU_OK;
    		    } else {
    			return NET_NOT_PREPARE;
    		    }
    		}
    	    }
    	} catch (Exception e) {
    	}
    	return NET_ERROR;
        }
    
        /**
         * 拼百度地址
         * 
         * @return
         */
        private static boolean connectionNetwork() {
    	boolean result = false;
    	HttpURLConnection httpUrl = null;
    	try {
    	    httpUrl = (HttpURLConnection) new URL("http://www.baidu.com").openConnection();
    	    httpUrl.setConnectTimeout(TIMEOUT);
    	    httpUrl.connect();
    	    result = true;
    	} catch (IOException e) {
    	} finally {
    	    if (null != httpUrl) {
    		httpUrl.disconnect();
    	    }
    	    httpUrl = null;
    	}
    	return result;
        }
    
        /**
         * 判断当前网络是否是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;
        }
    
        /**
         * 判断当前网络是否是wifi网络
         * 
         * @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;
        }
    
        /**
         * 判断当前网络是否是2G网络
         * 
         * @param context
         * @return boolean
         */
        public static boolean is2G(Context context) {
    	ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    	NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
    	if (activeNetInfo != null && (activeNetInfo.getSubtype() == TelephonyManager.NETWORK_TYPE_EDGE
    			|| activeNetInfo.getSubtype() == TelephonyManager.NETWORK_TYPE_GPRS 
    			|| activeNetInfo.getSubtype() == TelephonyManager.NETWORK_TYPE_CDMA)) {
    	    return true;
    	}
    	return false;
        }
    
        /**
         * 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);
        }
    
        /**
         * 获得本机ip地址
         * 
         * @return
         */
        public static String GetHostIp() {
    	try {
    	    for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
    		NetworkInterface intf = en.nextElement();
    		for (Enumeration<InetAddress> ipAddr = intf.getInetAddresses(); ipAddr.hasMoreElements();) {
    		    InetAddress inetAddress = ipAddr.nextElement();
    		    if (!inetAddress.isLoopbackAddress()) {
    			return inetAddress.getHostAddress();
    		    }
    		}
    	    }
    	} catch (SocketException ex) {
    	} catch (Exception e) {
    	}
    	return null;
        }
    
        /**
         * 获取本机串号imei
         * 
         * @param context
         * @return
         */
        public static String getIMEI(Context context) {
    	TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
    	return telephonyManager.getDeviceId();
        }
    }


    添加权限:访问网络权限

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  
    <uses-permission android:name="android.permission.INTERNET"/>  



  • 相关阅读:
    iOS无限循环滚动scrollview
    SDWebImage实现原理(怎么实现图片缓存器)
    CocoaPods第三方库管理 iOS
    什么时候会报unrecognized selector的异常?
    iOS提交后申请加急审核
    iOS 个人账号 iOS APP Development 灰色不可选
    Xcode6 管理provisioning profile
    iOS苹果推送功能实现步骤
    蓝桥杯 幸运数
    hihocoder编程练习赛52-3 部门聚会
  • 原文地址:https://www.cnblogs.com/java20130722/p/3207242.html
Copyright © 2011-2022 走看看