diff --git a/app/src/main/java/eu/faircode/email/ConnectionHelper.java b/app/src/main/java/eu/faircode/email/ConnectionHelper.java index 8d6201780c..3e20c40228 100644 --- a/app/src/main/java/eu/faircode/email/ConnectionHelper.java +++ b/app/src/main/java/eu/faircode/email/ConnectionHelper.java @@ -236,6 +236,11 @@ public class ConnectionHelper { } // VPN: evaluate underlying networks + Integer transport = null; + if (caps.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) + transport = NetworkCapabilities.TRANSPORT_CELLULAR; + else if (caps.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) + transport = NetworkCapabilities.TRANSPORT_WIFI; boolean underlying = false; Network[] networks = cm.getAllNetworks(); @@ -264,6 +269,14 @@ public class ConnectionHelper { continue; } + if (!caps.hasTransport(NetworkCapabilities.TRANSPORT_VPN) && + (caps.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) || + caps.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) && + (transport != null && !caps.hasTransport(transport))) { + Log.i("isMetered: underlying other transport"); + continue; + } + if (caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)) { underlying = true; Log.i("isMetered: underlying is connected");