zoukankan      html  css  js  c++  java
  • 安卓学习-其他-网络状态工具

    package org.excsoft.g;
    
    import java.io.IOException;
    import java.net.HttpURLConnection;
    import java.net.InetAddress;
    import java.net.NetworkInterface;
    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,String url) {
            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(url))
                                return NET_CNNT_BAIDU_TIMEOUT;
                            else
                                return NET_CNNT_BAIDU_OK;
                        } else {
                            return NET_NOT_PREPARE;
                        }
                    }
                }
            } catch (Exception e) {
            }
            return NET_ERROR;
        }
        
        public static int getNetState1(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()) {
                            return NET_CNNT_BAIDU_OK;
                        } else {
                            return NET_NOT_PREPARE;
                        }
                    }
                }
            } catch (Exception e) {
            }
            return NET_ERROR;
        }
    
        /**
         * 拼百度地址
         * 
         * @return
         */
        static private boolean connectionNetwork(String url) {
            boolean result = false;
            HttpURLConnection httpUrl = null;
            try {
                httpUrl = (HttpURLConnection) new URL(url)
                        .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 (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
        /**
         * 获取本机串号imei
         * 
         * @param context
         * @return
         */
        public static String getIMEI(Context context) {
            TelephonyManager telephonyManager = (TelephonyManager) context
                    .getSystemService(Context.TELEPHONY_SERVICE);
            return telephonyManager.getDeviceId();
        }
    
    }
  • 相关阅读:
    如何在ProXmoX VE 下虚拟机安装 黑群晖 DSM 6.1.6
    MySQL数据库(六) —— SQL注入攻击、视图、事物、存储过程、流程控制
    MySQL数据库(五)—— 用户管理、pymysql模块
    MySQL数据库(四)—— 记录相关操作之插入、更新、删除、查询(单表、多表)
    MySQL数据库(三)—— 表相关操作(二)之约束条件、关联关系、复制表
    MySQL数据库(二)——库相关操作、表相关操作(一)、存储引擎、数据类型
    MySQL数据库(一)—— 数据库介绍、MySQL安装、基础SQL语句
    并发编程(六)——进程/线程池、协程、gevent第三方库
    并发编程(五)——GIL全局解释器锁、死锁现象与递归锁、信号量、Event事件、线程queue
    并发编程(四)——线程、开启线程、守护线程、线程互斥锁
  • 原文地址:https://www.cnblogs.com/weijj/p/3978488.html
Copyright © 2011-2022 走看看