• Android开发(七)——判断网络状态


    项目中难免会出现使用网络的情况,使用网络前得进行网络判断,看网上的网友一般有多种实现版本。

    第一种:

    // 是否有网络连接
        public static boolean isNetworkConnected() {
            if (App.getContext() != null) {
                ConnectivityManager mConnectivityManager = (ConnectivityManager) App
                        .getContext()
                        .getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo mNetworkInfo = mConnectivityManager
                        .getActiveNetworkInfo();
                if (mNetworkInfo != null) {
                    return mNetworkInfo.isAvailable();
                }
            }
            return false;
        }

    第二种:

    /**
         * 判断网络是否可用
         * 
         * @param context
         * @return
         */
        public static boolean isNetworkAvailable(Context context) {
            ConnectivityManager cm = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            if (cm != null) {
                NetworkInfo[] info = cm.getAllNetworkInfo();
                if (info != null) {
                    for (int i = 0; i < info.length; i++) {
                        if (info[i].isConnected()) {
                            return true;
                        }
                    }
                }
            }
            return false;
        }

    其中主要的使用区别是isConnected()与isAvailable(),参考文章[3],总结5种连接状态情况:

    在WLAN设置界面状态 输出
    显示连接已保存,但标题栏没有,即没有实质连接上 输出为:not connect, available
    显示连接已保存,标题栏也有已连接上的图标  输出为:connect, available
    选择不保存后   输出为:not connect, available
    选择连接,在正在获取IP地址时  输出为:not connect, not available
    连接上后 输出为:connect, available

    建议使用:

    // 是否有网络连接
        public static boolean isNetworkConnected() {
            if (App.getContext() != null) {
                ConnectivityManager mConnectivityManager = (ConnectivityManager) App
                        .getContext()
                        .getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo mNetworkInfo = mConnectivityManager
                        .getActiveNetworkInfo();
                if (mNetworkInfo != null) {
                    return mNetworkInfo.isAvailable() && mNetworkInfo.isConnected();
                }
            }
            return false;
        }

    参考:

    [1] http://www.cnblogs.com/codeworker/archive/2012/04/23/2467180.html

    [2] http://blog.csdn.net/heng615975867/article/details/17280227

    [3] 关于NetworkInfo对象的isConnected()与isAvailable().http://www.oschina.net/question/54100_34632

  • 相关阅读:
    计算机考研真题 浮点数加法
    计算机考研复试真题 整数奇偶排序
    计算机考研复试 A+B
    计算机考研复试真题 整数拆分
    计算机考研复试真题 众数
    1121 Damn Single (25 分)
    1112 Stucked Keyboard (20 分)
    1117 Eddington Number (25 分)
    1005 继续(3n+1)猜想 (25 分)
    1047 编程团体赛 (20 分)
  • 原文地址:https://www.cnblogs.com/ccdc/p/4432583.html
Copyright © 2020-2023  润新知