android判断连接的wifi是否有网络

android判断连接的wifi是否有网络。

阅读 10.3k
4 个回答

public static int getNetWorkStatus(Context context) {

    ConnectivityManager connectivityManager = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivityManager != null) {
        NetworkInfo networkInfo = connectivityManager
                .getActiveNetworkInfo();
        if (networkInfo != null && networkInfo.isConnected()) {
            if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
                return NETWORK_WIFI_CONNECTION;
            }
            return NETWORK_MOBILE_CONNECTION;
        }
    }
    return NETWORK_DISCONNECTION;
}
新手上路,请多包涵

如果只是想检测网络是否连接,则直接使用 isNetworkConnected()
如果想检测网络连通性(是否能访问网络),则 isNetworkConnected()isNetworkOnline() 结合使用

private boolean isNetworkConnected() {
    ConnectivityManager connMgr = (ConnectivityManager)
            getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
    return (networkInfo != null && networkInfo.isConnected());
}

public boolean isNetworkOnline() {
    Runtime runtime = Runtime.getRuntime();
    try {
        Process ipProcess = runtime.exec("ping -c 1 114.114.114.114");
        int exitValue = ipProcess.waitFor();
        return (exitValue == 0);
    } catch (IOException | InterruptedException e) {
        e.printStackTrace();
    }
    return false;
}

注:114.114.114.114 可以改成你信任的网站(例如: www.baidu.com)

个人经验,不喜勿喷。。。
我从来都不管用户是连的3G、4G还是WIFI,我也不管连上WIFI是否是真的有网,因为这都不重要。
重点在于,用户的App能否连接到指定的服务器而已。
So……
直接测试和服务器的连接就好了,在没有联网的情况下,会很快抛出异常的。
Try catch一下就知道了。
或者专门写一个测试连接的API。

直接写个方法 访问http://www.baidu.com 有数据返回表示有网 没数据返回 或异常表示没网络。so

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏