zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    202103226-1 编程作业
    7 20210516-1 团队作业3—需求分析规格说明书
    原型设计作业
    案例分析作业
    202103226-1 编程作业
    阅读——《构建之法》
    第一周学习任务
    牛客app测评报告
    wordcount编程
    准备工作
  • 原文地址:https://www.cnblogs.com/ccdc/p/4432583.html
Copyright © 2011-2022 走看看