Get network DNS server

This commit is contained in:
M66B
2019-07-15 16:15:37 +02:00
parent c142c44055
commit 7c437d2a2d
4 changed files with 49 additions and 24 deletions

View File

@@ -3,6 +3,7 @@ package eu.faircode.email;
import android.content.Context;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.LinkProperties;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
@@ -16,6 +17,7 @@ import com.bugsnag.android.BreadcrumbType;
import com.bugsnag.android.Bugsnag;
import com.sun.mail.imap.IMAPStore;
import java.net.InetAddress;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
@@ -26,6 +28,11 @@ import java.util.Map;
import javax.mail.MessagingException;
public class ConnectionHelper {
private static final String DEFAULT_DNS = "8.8.8.8";
static final int AUTH_TYPE_PASSWORD = 1;
static final int AUTH_TYPE_GMAIL = 2;
// Roam like at home
// https://en.wikipedia.org/wiki/European_Union_roaming_regulations
private static final List<String> RLAH_COUNTRY_CODES = Collections.unmodifiableList(Arrays.asList(
@@ -62,9 +69,6 @@ public class ConnectionHelper {
"GB" // United Kingdom
));
static final int AUTH_TYPE_PASSWORD = 1;
static final int AUTH_TYPE_GMAIL = 2;
static class NetworkState {
private Boolean connected = null;
private Boolean suitable = null;
@@ -269,4 +273,23 @@ public class ConnectionHelper {
return Settings.System.getInt(context.getContentResolver(),
Settings.Global.AIRPLANE_MODE_ON, 0) != 0;
}
static String getDnsServer(Context context) {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.M)
return DEFAULT_DNS;
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm == null)
return DEFAULT_DNS;
Network active = cm.getActiveNetwork();
if (active == null)
return DEFAULT_DNS;
LinkProperties props = cm.getLinkProperties(active);
if (props == null)
return DEFAULT_DNS;
List<InetAddress> dns = props.getDnsServers();
if (dns.size() == 0)
return DEFAULT_DNS;
else
return dns.get(0).getHostAddress();
}
}