Не работает интернет проверка соединения android.net.isConected()

Этот вопрос связан с тем, как вы проверяете интернет-соединение в Android.

Решение @William мне очень помогает, но при ограниченном подключении оно не работает.

Я подключился к беспроводному модему, но этот модем не подключен к Интернету.

Согласно документации для Android эта функция должна выполнять всю работу, но я думаю, что данные, которые проверяются функцией, находятся только между android -> модемом, а не android -> webservice (internet).

Код @William:

final ConnectivityManager conMgr =  (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.isConnected()) {
     //notify user you are online
} else {
     //notify user you are not online
} 

Что я могу сделать, чтобы проверить интернет-соединение? Я что-то упустил?

2 ответа

Решение

Я думаю, что в качестве альтернативы вы могли бы сделать фактический HTTP-запрос к удаленному URL-адресу и посмотреть, будет ли он успешным.

Попробуй это

  public static boolean isInternetConnection(Context mContext) {
    final ConnectivityManager connMgr = (ConnectivityManager) mContext
            .getSystemService(Context.CONNECTIVITY_SERVICE);

    final android.net.NetworkInfo wifi = connMgr
            .getNetworkInfo(ConnectivityManager.TYPE_WIFI);

    final android.net.NetworkInfo mobile = connMgr
            .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

    if (wifi.isAvailable()
            && wifi.getState() == NetworkInfo.State.CONNECTED) {
        return true;
    } else if (mobile.isAvailable()
            && mobile.getState() == NetworkInfo.State.CONNECTED) {
        return true;
    } else {
        return false;
    }
}

public static boolean isWifi(Context mContext) {
    final ConnectivityManager connMgr = (ConnectivityManager) mContext
            .getSystemService(Context.CONNECTIVITY_SERVICE);

    final android.net.NetworkInfo wifi = connMgr
            .getNetworkInfo(ConnectivityManager.TYPE_WIFI);

    if (wifi.isAvailable()) {
        return true;
    } else {
        return false;
    }
}

public static boolean isOtherNetwork(Context mContext) {
    final ConnectivityManager connMgr = (ConnectivityManager) mContext
            .getSystemService(Context.CONNECTIVITY_SERVICE);

    final android.net.NetworkInfo mobile = connMgr
            .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

    if (mobile.isAvailable()) {
        return true;
    } else {
        return false;
    }
}

добавить разрешение в вашем манифесте

        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
Другие вопросы по тегам