0

我正在开发一个 Android 项目,我需要知道用户何时可以访问互联网。(不仅仅是wifi被激活。例如在用户使用热点wifi连接的情况下)

我使用这种方法:

public static boolean isOnline(final Context context) {
    boolean result = false;
    ConnectivityManager connec = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connec.getNetworkInfo(0).isConnectedOrConnecting() || connec.getNetworkInfo(1).isConnectedOrConnecting()) {
        URL url = new URL("https://www.google.fr");
        URLConnection urlConnection;
        urlConnection = url.openConnection();
        HttpURLConnection httpConnection = (HttpURLConnection) urlConnection;
        int responseCode = httpConnection.getResponseCode();
        result = (responseCode == 200);
    }
    return result;
}

此方法有效,但会减慢我的应用程序的速度,因为它用于每 5 秒检查一次用户连接的计时器中。而且我需要实时知道用户的连接状态...

有人知道另一种验证互联网连接的方法吗?也许用java反射......?

4

1 回答 1

-2
ConnectivityManager mConnMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

public boolean hasWifi() {
    return mConnMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI) != null
            && mConnMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
}

这是你想要的吗 ?

于 2013-08-06T13:43:44.740 回答