Android - Проверка подключения к интернету (с использованием открытых точек Wi-Fi, требующих входа в систему) - PullRequest
0 голосов
/ 01 февраля 2012

Я следовал этому http://www.helloandroid.com/tutorials/it-internet-connection-checker-snippet, чтобы проверить, есть ли подключение к Интернету на моем устройстве Android.

Блок кода выглядит следующим образом

URL url = new URL("http://www.google.com");
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setConnectTimeout(1000 * 5); // Timeout is in seconds
urlc.connect();
if (urlc.getResponseCode() == 200) {
    // http response is OK
    Log.d("db", "Connection to " + url.toString() + " successful!");
    return true;
}

Однако мое устройствоподключен, чтобы открыть точки Wi-Fi, который требует входа на веб-страницу, прежде чем получить доступ к Интернету.Кажется, этот код возвращает true даже без входа в систему.

Интересно, что я могу сделать?

Ответы [ 3 ]

1 голос
/ 01 февраля 2012

Если у вас есть собственный домен, создайте веб-страницу, содержащую только одно ключевое слово по вашему выбору. Например: «успех»

Теперь подключитесь к этой странице, а не к Google, и проверьте, возвращает ли она «успех».

URL url = new URL("http://www.yourdomain.com/yourpage.html");
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setConnectTimeout(1000 * 5); // Timeout is in seconds
urlc.connect();
if (urlc.getResponseCode() == 200) {
    // http response is OK

    InputStream in = urlc.getInputStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    String line = reader.readLine();
    in.close();
    if (line == "success"){
        Log.d("db", "Connection to " + url.toString() + " successful!");
        return true;
    } else {
        return false;
    }
}
0 голосов
/ 01 февраля 2012
private boolean checkInternetConnection() {
    ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    if (conMgr.getActiveNetworkInfo() != null
            && conMgr.getActiveNetworkInfo().isAvailable()
            && conMgr.getActiveNetworkInfo().isConnected()) {
        return true;
    } else {
        Toast toast = Toast
                .makeText(
                        getApplicationContext(),
                        "No Internet Connection Found !!! Please Connect To Internet First",
                        Toast.LENGTH_LONG);
        toast.setGravity(Gravity.CENTER, 0, 0);
        toast.show();
        new Thread(new Runnable() {
            public void run() {
                try {
                    Thread.sleep(5000);
                    finish();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
        return false;
    }
}
0 голосов
/ 01 февраля 2012

Я думаю, что вы должны использовать этот метод проверить интернет соединение доступно.

public boolean isOnline()
        {

             ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
             NetworkInfo ni = cm.getActiveNetworkInfo();
             boolean result = false;
             if(ni != null )
             {
                 if(  ni.getState() == NetworkInfo.State.CONNECTED )
                 {
                     result = true;
                 }
             }

             return result;

            } 
...