Search code examples
androidandroid-studiocallbackandroid-networkinginternet-connection

How to check internet without Networkinfo(Java)


Since NetworkInfo is deprecated I don't able to find any alternative solution.
I've tried ConnectivityManager.NetworkCallbacks but in this OnNetworkUnavailable is not working.

How to check for internet when a button is clicked?


Solution

  • Add this permission in manifest

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    

    Then use below method

    public boolean isOnline() {
    
        boolean isConnected = false;
        ConnectivityManager connectivityMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
            // Checking internet connectivity
            NetworkInfo activeNetwork = null;
            if (connectivityMgr != null) {
                activeNetwork = connectivityMgr.getActiveNetworkInfo(); // Deprecated in API 29
            }
            isConnected = activeNetwork != null;
    
        } else {
            Network[] allNetworks = connectivityMgr.getAllNetworks(); // added in API 21 (Lollipop)
    
            for (Network network : allNetworks) {
                NetworkCapabilities networkCapabilities = connectivityMgr.getNetworkCapabilities(network);
                if (networkCapabilities != null) {
                    if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
                            || networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
                            || networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET))
                        isConnected = true;
                }
            }
        }
    
        return isConnected;
    
    }