Check transport of underlying network

This commit is contained in:
M66B 2020-07-26 20:19:59 +02:00
parent 81fdd8dfe0
commit 998be94fee
1 changed files with 13 additions and 0 deletions

View File

@ -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");