首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查在android设备上网络不可用的情况?

如何检查在android设备上网络不可用的情况?
EN

Stack Overflow用户
提问于 2017-04-27 06:26:30
回答 5查看 970关注 0票数 0

我使用android设备

当应用程序启动时,检查当前的网络状态。

所以我试试这个。

代码语言:javascript
复制
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERIVCE);
NetworkInfo ethernet = manager.getNetworkInfo(ConnectivityManager.TYPE_ETHERNET);
NetworkInfo wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

if (wifi.isConnected()) {
   Log.d(TAG, "WIFI isConnected");
} else if (ethernet.isConnected()) {
   Log.d(TAG, "Ethernet isConnected");
} else if (wifi.isAvaiable()) {
   Log.d(TAG, "Wifi not connect, but wifi isAvailable");
} else {
   Log.d(TAG, "not available network");
}

此源检查Wi和以太网网络状态。

但当无法建立网络时。不是检查。

我的设备如果使用wifi,连接我的设备上的无线局域网。

当我的设备上断开无线局域网时。我的消息来源是wifi.isAvailable()

最后,

  1. 如何检查何时网络不可用(当前源,网络不可用时请检查wifi.isAvailable)
  2. 当连接无线局域网和无线局域网关闭时,检查wifi.isAvailable(),但当断开无线局域网和Wifi关闭时,检查wifi.isAvailable()如何区分这种情况。

谢谢。

EN

回答 5

Stack Overflow用户

发布于 2017-04-27 06:36:40

您应该使用getActiveNetworkInfo()检查当前活动的默认数据网络的连接性--不需要检查特定的数据网络;无论是以太网还是Wi。

代码语言:javascript
复制
  public static boolean NetAvailable(final Context context) {
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    final boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
    return isConnected;
   }
票数 0
EN

Stack Overflow用户

发布于 2017-04-27 06:46:57

代码语言:javascript
复制
public static boolean isNetworkAvailable(Context context) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(
                Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        return activeNetworkInfo != null && activeNetworkInfo.isConnected();
    }
票数 0
EN

Stack Overflow用户

发布于 2017-04-27 06:58:39

要了解工作的internet状态,请使用以下代码片段

代码语言:javascript
复制
public static boolean isInternetAccess() {
    try {
        HttpURLConnection urlc = (HttpURLConnection) 
            (new URL("http://www.google.com")
            .openConnection());
        urlc.setRequestProperty("User-Agent", "Android");
        urlc.setRequestProperty("Connection", "close");
        urlc.setConnectTimeout(1500); 
        urlc.connect();
        return (urlc.getResponseCode() == 200);
    } catch (IOException e) {
        Log.e(TAG, "Error checking internet connection", e);
    }

return false;

}

如果此代码返回失败的结果,这意味着网络不可用,并调用您的代码获取可用网络。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43650116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档