Check if VPN network has internet

pull/214/head
M66B 1 year ago
parent 0394b14a62
commit 6df8613004

@ -300,9 +300,10 @@ public class ConnectionHelper {
if (caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)) { if (caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)) {
if (!caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) { if (!caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) {
Log.i("isMetered: no internet"); Log.i("isMetered: active no internet");
return null; return null;
} }
boolean captive = caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL); boolean captive = caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL);
if ((require_validated || (require_validated_captive && captive)) && if ((require_validated || (require_validated_captive && captive)) &&
Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
@ -330,17 +331,23 @@ public class ConnectionHelper {
return null; return null;
} }
if (standalone_vpn || if (caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)) {
caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)) {
// NET_CAPABILITY_NOT_METERED is unreliable on older Android versions // NET_CAPABILITY_NOT_METERED is unreliable on older Android versions
boolean metered = cm.isActiveNetworkMetered(); boolean metered = cm.isActiveNetworkMetered();
Log.i("isMetered: active not VPN metered=" + metered); Log.i("isMetered: active not VPN metered=" + metered);
return metered; return metered;
} }
// Active network is VPN network
Network[] networks = cm.getAllNetworks(); Network[] networks = cm.getAllNetworks();
if (networks != null && networks.length == 1) { if (standalone_vpn || (networks != null && networks.length == 1)) {
// Standalone VPN // Standalone VPN
if (!caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) {
Log.i("isMetered: VPN no internet");
return null;
}
boolean metered = cm.isActiveNetworkMetered(); boolean metered = cm.isActiveNetworkMetered();
Log.i("isMetered: active VPN metered=" + metered); Log.i("isMetered: active VPN metered=" + metered);
return metered; return metered;

Loading…
Cancel
Save