安卓工具类之获取网络状态工具类

网络很常用的,不多说,注释很清楚,直接拿来用:

public class NetInfoUtil {
    private static final String TAG = NetInfoUtil.class.getSimpleName();
    public static final String NET_NO = "NO";
    public static final String NET_WIFI = "WIFI";
    public static final String NET_2G = "2G";
    public static final String NET_3G = "3G";
    public static final String NET_4G = "4G";

    /**
     * 获取当前网络是否可用(true:isAvailable; false:unAvailable)
     *
     * @param pContext Context
     * @return true:isAvailable; false:otherwise;
     */
    public static boolean isNetworkAvailable(Context pContext) {
        if (pContext != null) {
            ConnectivityManager _CM = (ConnectivityManager) pContext.getSystemService(Context.CONNECTIVITY_SERVICE);
            if (_CM != null) {
                try {
                    if (_CM.getActiveNetworkInfo() != null) {
                        if (_CM.getActiveNetworkInfo().isAvailable()) {
                            return true;
                        }
                    }
                } catch (Exception e) {
                    return false;
                }

            }
            return false;
        }
        return false;
    }

    /**
     * 获取Wifi是否可用
     *
     * @param pContext Context
     * @return true:isAvailable; false:otherwise;
     */
    public static boolean isWiFiActive(Context pContext) {
        if (pContext == null)
            return false;
        boolean _IsAvailable = false;
        WifiManager _WifiManager;
        WifiInfo _WifiInfo;
        try{
            _WifiManager = (WifiManager)pContext.getSystemService(Context.WIFI_SERVICE);
            _WifiInfo = _WifiManager.getConnectionInfo();
            int _IpAddress = _WifiInfo == null ? 0 : _WifiInfo.getIpAddress();
            if (_WifiManager.isWifiEnabled() && _IpAddress != 0) {
                _IsAvailable = true;
            }
        }catch(Exception e){
            _IsAvailable = false;
        }
        return _IsAvailable;
    }

    /**
     * 获取当前的网络名称(WIFI or 2G or 3G or 4G)
     *
     * @param pContext Context
     * @return WIFI or 2G or 3G or 4G
     */
    public static String getNetworkName(Context pContext) {
        try {
            ConnectivityManager _CM = (ConnectivityManager) pContext.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo _NetworkInfo = _CM.getActiveNetworkInfo();
            if (_NetworkInfo == null || !_NetworkInfo.isConnected()) {
                return NET_NO; //not connected
            }
            if (_NetworkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
                return NET_WIFI;
            }
            if (_NetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
                int networkType = _NetworkInfo.getSubtype();
                switch (networkType) {
                    case TelephonyManager.NETWORK_TYPE_GPRS:
                    case TelephonyManager.NETWORK_TYPE_EDGE:
                    case TelephonyManager.NETWORK_TYPE_CDMA:
                    case TelephonyManager.NETWORK_TYPE_1xRTT:
                    case TelephonyManager.NETWORK_TYPE_IDEN:
                        return NET_2G;
                    case TelephonyManager.NETWORK_TYPE_UMTS:
                    case TelephonyManager.NETWORK_TYPE_EVDO_0:
                    case TelephonyManager.NETWORK_TYPE_EVDO_A:
                    case TelephonyManager.NETWORK_TYPE_HSDPA:
                    case TelephonyManager.NETWORK_TYPE_HSUPA:
                    case TelephonyManager.NETWORK_TYPE_HSPA:
                    case TelephonyManager.NETWORK_TYPE_EVDO_B:
                    case TelephonyManager.NETWORK_TYPE_EHRPD:
                    case TelephonyManager.NETWORK_TYPE_HSPAP:
                        return NET_3G;
                    case TelephonyManager.NETWORK_TYPE_LTE:
                        return NET_4G;
                }
            }
        } catch (Exception e) {
            return NET_NO;
        }
        return NET_NO;
    }

    /**
     * 获取 Wifi 名称
     * @param pContext
     * @return
     */
    public static String getWifiName(Context pContext) {
        String _WifiName = "";
        WifiManager _WifiManager = (WifiManager) pContext.getSystemService(Context.WIFI_SERVICE);
        _WifiName = _WifiManager.getConnectionInfo().getSSID();
        return _WifiName;
    }

    /**
     * 获取 Wifi状态
     * @param pContext Context
     * @return
     */
    public static int getWifiStatus(Context pContext) {
        return ((WifiManager) pContext.getSystemService(Context.WIFI_SERVICE)).getWifiState();
    }

    /**
     * 获取 Wifi IP
     * @param pContext
     * @return
     */
    public static String getHostIp(Context pContext) {
        String _HostIp = "";
        try {
            WifiManager _WifiManager = (WifiManager) pContext.getSystemService(Context.WIFI_SERVICE);
            int i;
            if (_WifiManager.isWifiEnabled()) {
                i = _WifiManager.getConnectionInfo().getIpAddress();
                if (i != 0)
                    _HostIp = (i & 0xFF) + "." + (0xFF & i >> 8) + "."
                            + (0xFF & i >> 16) + "." + (0xFF & i >> 24);
            } else {
                i = getWifiStatus(pContext);
                if ((i == 2) || (i == 3)) {
                    Enumeration<?> _Enumeration = NetworkInterface.getNetworkInterfaces();
                    while (_Enumeration.hasMoreElements()) {
                        Enumeration<?> _EnumerationTemp = ((NetworkInterface) _Enumeration
                                .nextElement()).getInetAddresses();
                        if (!_EnumerationTemp.hasMoreElements())
                            ;
                        while (true) {
                            if (_HostIp.length() <= 0)
                                break;
                            InetAddress _LocalInetAddress = (InetAddress) _EnumerationTemp
                                    .nextElement();
                            if ((_LocalInetAddress.isLoopbackAddress())
                                    || (!(_LocalInetAddress instanceof Inet4Address)))
                                break;
                            _HostIp = _LocalInetAddress.getHostAddress();
                        }
                    }
                }
            }
        } catch (Exception localException) {
            localException.printStackTrace();
        }
        return _HostIp;
    }

    /**
     * 获取手机MAC地址
     * @param pContext
     * @return
     */
    public static String getMacAddress(Context pContext){
        String _MacAddress = "";
        try {
            WifiManager _WifiManager = (WifiManager) pContext.getSystemService(Context.WIFI_SERVICE);
            WifiInfo _WifiInfo = _WifiManager.getConnectionInfo();
            _MacAddress = _WifiInfo.getMacAddress();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return _MacAddress;
    }

    /**
     * 获取手机搜索到的WIFI的BSSID
     *
     * @param pContext pContext
     * @return
     */
    public static String getScanBSSID(Context pContext){
        String _MacAddress = "";
        StringBuffer _StringBuffer = new StringBuffer();
        try {
            WifiManager _WifiManager = (WifiManager) pContext.getSystemService(Context.WIFI_SERVICE);
            List<ScanResult> _ScanResults = _WifiManager.getScanResults();
            int i = 0;
            for (ScanResult _ScanResult : _ScanResults) {
                if(i < 15){
                    _StringBuffer.append( _ScanResult.BSSID).append(",");
                    i ++;
                }
            }
            if (_StringBuffer.length() > 0){
                if ((_StringBuffer.charAt(_StringBuffer.length() - 1)) == ',') {
                    _StringBuffer.deleteCharAt(_StringBuffer.length() - 1);
                }
                _MacAddress = _StringBuffer.toString();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return _MacAddress;
    }

    /**
     * 获取URL的域名
     *
     * @param pUrl URL
     * @return host url
     */
    public static String getDomainOfUrl(String pUrl){
        URL _URL;
        String _Host = "";
        try {
            _URL = new URL(pUrl);
            _Host = _URL.getHost();
        } catch (Exception e) {
        }
        return _Host;
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值