Возвращаемое значение в ConnectivityManager и / или NetworkInfo в ADT - Android

Когда я использую приведенный ниже код для отображения состояния моего соединения, условие "if" всегда возвращает "true", если только я не поставил "netinfo" равным "null".

В чем проблема?

public boolean isConnectedToInternet()
{   
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    if ( netInfo.isConnectedOrConnecting())
        {
            Toast.makeText(this, "On",Toast.LENGTH_LONG).show();
            Log.i("NewsList", "Internet Connection found.");
            return true;
        }

    Toast.makeText(this, "Off",Toast.LENGTH_LONG).show();
    return false;
}

1 ответ

Попробуйте следующее:

DetectConnection.class:

public class DetectConnection {
    /*
     * Checking internet connection
     */
    public static boolean checkInternetConnection(Context context) {

        ConnectivityManager con_manager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        if (con_manager.getActiveNetworkInfo() != null
                && con_manager.getActiveNetworkInfo().isAvailable()
                && con_manager.getActiveNetworkInfo().isConnected()) {
            return true;
        } else {
            return false;
        }
    }
}

Проверьте интернет из другого вида деятельности:

if (DetectConnection.checkInternetConnection(this)) {
        //do something
}
Другие вопросы по тегам