diff --git a/src/org/lineageos/updater/misc/Utils.java b/src/org/lineageos/updater/misc/Utils.java index 7dca495e..d768f62f 100644 --- a/src/org/lineageos/updater/misc/Utils.java +++ b/src/org/lineageos/updater/misc/Utils.java @@ -23,7 +23,8 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.net.ConnectivityManager; -import android.net.NetworkInfo; +import android.net.Network; +import android.net.NetworkCapabilities; import android.os.SystemProperties; import android.os.storage.StorageManager; import android.util.Log; @@ -187,8 +188,18 @@ public class Utils { public static boolean isNetworkAvailable(Context context) { ConnectivityManager cm = context.getSystemService(ConnectivityManager.class); - NetworkInfo info = cm.getActiveNetworkInfo(); - return !(info == null || !info.isConnected() || !info.isAvailable()); + Network activeNetwork = cm.getActiveNetwork(); + NetworkCapabilities networkCapabilities = cm.getNetworkCapabilities(activeNetwork); + if (networkCapabilities != null && + networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) && + networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)) { + return networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) + || networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) + || networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_USB) + || networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN) + || networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI); + } + return false; } public static boolean isNetworkMetered(Context context) {