Checking whether you’re connected to the Internet or not when you turn on Wi-Fi

I am having a problem with a device that is available on the Internet or not. Let me briefly explain my request with an example: I tested my application in a use case. If I have wifi on my router, but I disconnect the Ethernet cable from my router and connect my device to Wi-Fi using the following code:

private boolean checkConnection() {
    boolean connected = false;
    ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

    if (cm != null) {
        NetworkInfo[] netInfo = cm.getAllNetworkInfo();

        for (NetworkInfo ni : netInfo) {
            if ((ni.getTypeName().equalsIgnoreCase("WIFI")
                || ni.getTypeName().equalsIgnoreCase("MOBILE"))
                & ni.isConnected() & ni.isAvailable()) {
                connected = true;
            }

        }
    }

    return connected;
}

I get a boolean flag to connect. This code returns the status of the switch device, since my device is connected to Wi-Fi or not, but I do not get any response from the server or host, so I need to check whether Internet access is available on my device or not. Please help me with the same. I tried many approaches or methodologies, but could not succeed.

Thanks in advance.

0
2
      On button click 
        if(isInternetON(MainActivity.this)){
        mMyDownloadTask = new MyDownloadTask();
        delayCancel = new DelayCancel(mMyDownloadTask);
        handler.postDelayed(delayCancel,3*1000);
        mMyDownloadTask.execute();



        }



  public static class MyDownloadTask extends AsyncTask<Boolean,Void,Boolean> {

        public MyDownloadTask() {

        }

        protected Boolean doInBackground(Boolean... params) {
            try {
                URL url = new URL("http://www.google.com");
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//              connection.setRequestMethod("Head");
//              connection.setConnectTimeout(2000);
                connection.connect();

                int code = connection.getResponseCode();
                Log.e(TAG, "code : " + code);
                if (code == 200) {
                    ThreadActivity.isAviliable = true;
                    MainActivity.value = "true";
                    return true;

                } else {
                    ThreadActivity.isAviliable = false;
                    MainActivity.value = "false";
                    return false;

                }

            } catch (Exception e) {
                ThreadActivity.isAviliable = false;
                MainActivity.value = "false";
                e.printStackTrace();
                return false;
            }

        }

        protected void onPostExecute(Boolean result) {
            // dismiss progress dialog and update ui
            Log.e(TAG,"result "+result);
            if(result){
                ThreadActivity.isAviliable = true;
                MainActivity.value = "true";
            }else{
                ThreadActivity.isAviliable = false;
                MainActivity.value = "false";
            }

        }
    }
    public static class DelayCancel implements Runnable{
        private AsyncTask task;

        public DelayCancel(AsyncTask task) {
            this.task = task;

        }

        @Override
        public void run() {
            Log.e(TAG, "Running.....");
            if (task.getStatus() == AsyncTask.Status.RUNNING) {
                task.cancel(true);
                Log.e(TAG, "Cancel 1.....");
                ThreadActivity.isAviliable = false;
                MainActivity.value = "false";
            }
            if (task.getStatus() == AsyncTask.Status.PENDING){
                task.cancel(true);
                ThreadActivity.isAviliable = false;
                MainActivity.value = "false";
                Log.e(TAG, "Cancel 2.....");
            }
        }
    }

    public static boolean isInternetON(Context ctx){

        ConnectivityManager cm =(ConnectivityManager)ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();

       /* Log.e("Common Class","activeNetwork.getState()"+activeNetwork.getState());
        Log.e("Common Class","activeNetwork.isAvailable()"+activeNetwork.isAvailable());
        Log.e("Common Class","activeNetwork.getReason()"+activeNetwork.getReason());
        Log.e("Common Class","activeNetwork.getExtraInfo()"+activeNetwork.getExtraInfo());
        Log.e("Common Class","activeNetwork.describeContents()"+activeNetwork.describeContents());
        Log.e("Common Class","activeNetwork.isConnectedOrConnecting()"+activeNetwork.isConnectedOrConnecting());
        Log.e("Common Class","activeNetwork.isFailover()"+activeNetwork.isFailover());*/

        boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting() && activeNetwork.isAvailable();

        return isConnected;
    }
0

, , ping- - - google, : IP- Java Android

0

Source: https://habr.com/ru/post/1663640/


All Articles