【问题标题】:Detect Internet Connection in Android Application?在 Android 应用程序中检测 Internet 连接?
【发布时间】:2012-12-19 18:23:04
【问题描述】:

我有以下方法,它将检查设备中的 Internet 连接:

public static boolean checkInternetConnection(Context context) {
    ConnectivityManager connectivityManager = 
            (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

    if (connectivityManager.getActiveNetworkInfo() != null
            && connectivityManager.getActiveNetworkInfo().isAvailable()
            && connectivityManager.getActiveNetworkInfo().isConnected()) {
        return true;
    } else {
        return false;
    }

}

但过了一会儿我发现这个方法只检查网络连接;就像设备连接到路由器并且路由器已打开但没有可用的互联网一样,此方法返回 true。

那么如何知道有没有真正的互联网呢?

【问题讨论】:

    标签: android android-networking


    【解决方案1】:

    那么什么是“实际互联网”?在任何给定时间连接到 Internet 上任何可能的主机的能力?有点难测试,不是吗?尝试连接到知名服务器(Google、NASA、您所在国家/地区的顶级提供商主页),如果可以,您可能拥有“实际互联网”。

    【讨论】:

    • 我会走得更远一点,最好检查一下您是否可以连接到专用 IP 地址,例如 google 的静态地址,而不是依赖 DNS 进行查找。
    • 是的,但是如果 DNS 坏了,整个事情就没什么用了,对吧?
    【解决方案2】:

    我看到的唯一方法是尝试连接到像谷歌这样的网站,如果你得到结果,那么你可以确定它,否则没有互联网活动。

    【讨论】:

      【解决方案3】:

      试试这个功能...

      public static Boolean checknetwork(Context mContext) 
          {
      
              NetworkInfo info = ((ConnectivityManager) mContext
                      .getSystemService(Context.CONNECTIVITY_SERVICE))
                      .getActiveNetworkInfo();
              if (info == null || !info.isConnected()) 
              {
      
                  return false;
              }
              if (info.isRoaming()) 
              {
                  // here is the roaming option you can change it if you want to
                  // disable internet while roaming, just return false
                  return true;
              }
      
              return true;
      
          }
      

      【讨论】:

        【解决方案4】:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多