Improve wifi detection to account for VPNs.

Fixes #14462
This commit is contained in:
Greyson Parrelli
2025-12-02 14:57:54 -05:00
committed by jeffrey-signal
parent 30e43e99fc
commit ba63a5255d

View File

@@ -19,8 +19,32 @@ public final class NetworkUtil {
private NetworkUtil() {}
public static boolean isConnectedWifi(@NonNull Context context) {
final NetworkInfo info = getNetworkInfo(context);
return info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_WIFI;
ConnectivityManager connectivityManager = ServiceUtil.getConnectivityManager(context);
Network activeNetwork = connectivityManager.getActiveNetwork();
if (activeNetwork == null) {
return false;
}
NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(activeNetwork);
if (capabilities == null) {
return false;
}
if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
return true;
}
if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN)) {
for (Network underlyingNetwork : connectivityManager.getAllNetworks()) {
NetworkCapabilities underlyingCapabilities = connectivityManager.getNetworkCapabilities(underlyingNetwork);
if (underlyingCapabilities != null && underlyingCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
return true;
}
}
}
return false;
}
public static boolean isConnectedMobile(@NonNull Context context) {