在没有ping的情况下检查Android的热点wifi连接

时间:2013-08-06 13:14:00

标签: android wifi

我正在开发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;
}

这种方法有效,但会减慢我的应用程序,因为它在Timer中使用,每隔5秒检查一次用户的连接。我需要实时了解用户的连接状态......

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

1 个答案:

答案 0 :(得分:-2)

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

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

这是你想要的吗?