Fix possible SecurityException in Android 11

This commit is contained in:
emanuele-f 2022-06-15 16:22:34 +02:00
parent 0054d29b25
commit 03865a0c4d
2 changed files with 24 additions and 10 deletions

View File

@ -599,10 +599,19 @@ public class CaptureService extends VpnService implements Runnable {
}
};
cm.registerNetworkCallback(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET).build(),
mNetworkCallback);
try {
cm.registerNetworkCallback(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET).build(),
mNetworkCallback);
} catch (SecurityException e) {
// this is a bug in Android 11 - https://issuetracker.google.com/issues/175055271?pli=1
e.printStackTrace();
Log.w(TAG, "registerNetworkCallback failed, DNS server detection disabled");
dns_server = FALLBACK_DNS_SERVER;
mNetworkCallback = null;
}
}
private void unregisterNetworkCallbacks() {

View File

@ -490,15 +490,20 @@ public class Utils {
public static boolean hasVPNRunning(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if(cm != null) {
Network[] networks = cm.getAllNetworks();
try {
Network[] networks = cm.getAllNetworks();
for(Network net : networks) {
NetworkCapabilities cap = cm.getNetworkCapabilities(net);
for(Network net : networks) {
NetworkCapabilities cap = cm.getNetworkCapabilities(net);
if ((cap != null) && cap.hasTransport(NetworkCapabilities.TRANSPORT_VPN)) {
Log.d("hasVPNRunning", "detected VPN connection: " + net.toString());
return true;
if ((cap != null) && cap.hasTransport(NetworkCapabilities.TRANSPORT_VPN)) {
Log.d("hasVPNRunning", "detected VPN connection: " + net.toString());
return true;
}
}
} catch (SecurityException e) {
// this is a bug in Android 11 - https://issuetracker.google.com/issues/175055271?pli=1
e.printStackTrace();
}
}