Android Проверьте, есть ли WiFi, но нет интернета

Я пишу программу, в которой мне нужно проверить три состояния: 1. Если у меня нет Wi-Fi, 2. если у меня есть WiFi, но нет подключения к Интернету (например, если я включаю свой маршрутизатор, но отключаю кабель Ethernet), и 3. если У меня есть WiFi и подключение к интернету. Затем я изменил бы цвет значка в своем приложении, чтобы представить одно из этих состояний (красный, желтый или зеленый). В настоящее время условие 2 не работает, каждый раз, когда я отключаю кабель на маршрутизаторе для тестирования, цвет значка меняется с зеленого на красный.

public static void doPing(Context context) {

        String googleUrl = "https://www.google.com";
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

        try {
            HttpParams httpParameters = new BasicHttpParams();
            HttpConnectionParams.setConnectionTimeout(httpParameters, TIMEOUT_CONNECTION);

            HttpConnectionParams.setSoTimeout(httpParameters, TIMEOUT_SOCKET);

            HttpClient client = new DefaultHttpClient(httpParameters);
            if (L) Log.i(TAG, "Calling: " + url );
            HttpGet getGoogle = getHttpGet(googleUrl);
            HttpResponse responseGoogle = client.execute(getGoogle);

            if (responseGoogle != null){
                 connectionIconView.setIcon(R.drawable.green_wifi);
            }
            else if (cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI) != null){
                connectionIconView.setIcon(R.drawable.yellow_wifi);
            }
            else {
                 connectionIconView.setIcon(R.drawable.red_wifi);
            }

        } catch(Exception e) {
            if (L) Log.e(TAG, "Error during HTTP call");
            e.printStackTrace();
        }

Ответы на вопрос(1)

Ваш ответ на вопрос