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?
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;
}