zoukankan      html  css  js  c++  java
  • 获取网络状态

    想要获取网络状态,首先必须在manifest文件下声明权限:

    android.permission.INTERNET——允许应用程序打开网络套接字。

    android.permission.ACCESS_NETWORK_STATE——允许应用程序访问网络连接信息。

    第一种方法可以获取是 移动网络还是WiFi:

    在执行网络操作之前,检查设备当前连接的网络连接信息是个好习惯。这样可以防止我们的程序在无意间连接使用了非意向的网络频道。如果网络连接不可用,那么我们的应用应该优雅地做出响应。为了检测网络连接,我们需要使用到下面两个类:

    • ConnectivityManager:它会回答关于网络连接的查询结果,并在网络连接改变时通知应用程序。
    • NetworkInfo:描述一个给定类型(就本节而言是移动网络或 Wi-Fi)的网络接口状态。

    这段代码检查了 Wi-Fi 与移动网络的网络连接。它检查了这些网络接口是否可用(也就是说网络是通的)及是否已连接(也就是说网络连接存在,并且可以建立 socket 来传输数据):

    private static final String DEBUG_TAG = "NetworkStatusExample";
    ...
    ConnectivityManager connMgr = (ConnectivityManager)
            getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    boolean isWifiConn = networkInfo.isConnected();
    networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    boolean isMobileConn = networkInfo.isConnected();
    Log.d(DEBUG_TAG, "Wifi connected: " + isWifiConn);
    Log.d(DEBUG_TAG, "Mobile connected: " + isMobileConn);

    请注意我们不应该仅仅靠网络是否可用来做出决策。由于 isConnected() 能够处理片状移动网络(flaky mobile networks),飞行模式和受限制的后台数据等情况,所以我们应该总是在执行网络操作前检查 isConnected()

    第二个方法:

    一个更简洁的检查网络是否可用的示例如下。getActiveNetworkInfo() 方法返回一个 NetworkInfo 实例,它表示可以找到的第一个已连接的网络接口,如果返回 null,则表示没有已连接的网络接口(意味着网络连接不可用):

    public boolean isOnline() {
        ConnectivityManager connMgr = (ConnectivityManager)
                getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
        return (networkInfo != null && networkInfo.isConnected());
    }
  • 相关阅读:
    ubuntu 11.04 Gnome 恢复默认的任务栏面板
    (转载)学习腾讯的产品管理之道
    (转载)项目管理之外谈项目管理
    windows 下键盘映射
    该留意的文章
    一些常用的工具
    ubuntu 11.04 old sources.list
    一个css3流程导图
    echarts雷达图
    highcharts图表
  • 原文地址:https://www.cnblogs.com/imqsl/p/6737585.html
Copyright © 2011-2022 走看看