1

我有以下方法,它将检查设备中的 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。

那么如何知道是否有实际的互联网?

4

4 回答 4

4

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

于 2012-12-17T05:39:36.433 回答
1

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

于 2012-12-17T05:43:56.327 回答
0

试试这个功能...

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;

    }
于 2012-12-17T05:39:15.977 回答
0

关于这个主题已经有很多问题,并提供了建议解决方案的答案。试着看看其中的一些。

在尝试发送 SMS 之前检查 Android 中的网络覆盖范围

如何在 Android 上检查互联网访问(包括网络共享!)?

如何确定android中的网络不可用

于 2012-12-19T10:23:04.970 回答