android - 验证设备是否连接到互联网,而不仅仅是网络

标签 android wifi connectivity

我需要一些方法来验证我的网络是否已连接到互联网,在我的研究过程中,我发现了下面描述的一些方法:

public static boolean hasInternetAccess(Context context) {
    if (isNetworkAvailable(context)) {
        try {
            HttpURLConnection urlc = (HttpURLConnection) 
                (new URL("http://clients3.google.com/generate_204")
                .openConnection());
            urlc.setRequestProperty("User-Agent", "Android");
            urlc.setRequestProperty("Connection", "close");
            urlc.setConnectTimeout(1500); 
            urlc.connect();
            return (urlc.getResponseCode() == 204 &&
                        urlc.getContentLength() == 0);
        } catch (IOException e) {
            Log.e(TAG, "Error checking internet connection", e);
        }
    } else {
        Log.d(TAG, "No network available!");
    }
    return false;
}

...但是我的程序会在中国发行,谷歌在中国被屏蔽。

我想创建一个这样的方法,首先选择我的本地化以获得 Baidoo 网站 - 就像中国的谷歌 - 但这是一种非常广泛的方法来检查设备是否连接到某个网络并验证是否连接在互联网上。

最佳答案

您可以使用 ConnectivityManager 尝试这样的事情:

public static boolean  isConnectedToInternet(Context context){
        boolean isConnected= false;
        ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo wifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        NetworkInfo mobile = connectivityManager .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);        
        isConnected= (wifi.isAvailable() && wifi.isConnectedOrConnecting() || (mobile.isAvailable() && mobile.isConnectedOrConnecting()));
        return isConnected;
    }

您还可以查看所选答案herehere

关于android - 验证设备是否连接到互联网,而不仅仅是网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37057103/

相关文章:

google-maps - Google map V6 室内导航

wifi - 使用 Wi-Fi 强度信号进行指纹识别

ios - 如何在 iOS 模拟器中伪造网络连接类型的变化?

android - 我无法使用 StringBuilder 操作来自 inputStream 的数据

android - 复选框上下文菜单

c# - 在没有网络连接的情况下发送数据包(无线适配器)

ios - 是否可以测量 iOS 应用程序中的数据包丢失?

Java程序和mySQL连接问题: No suitable driver found

android - 在多个 Android 应用程序中使用相同的 admob 发布者 ID(广告单元 ID)?

java - 在 Kotlin 中使用 Room 的 @ForeignKey 作为 @Entity 参数