diff --git a/res/layout/private_dns_mode_dialog.xml b/res/layout/private_dns_mode_dialog.xml
index 004401de753..315bb63ffd2 100644
--- a/res/layout/private_dns_mode_dialog.xml
+++ b/res/layout/private_dns_mode_dialog.xml
@@ -41,6 +41,10 @@
android:id="@+id/private_dns_mode_cloudflare"
layout="@layout/preference_widget_dialog_radiobutton"/>
+
+
diff --git a/res/values/evolution_strings.xml b/res/values/evolution_strings.xml
index 1365c09ee11..202a96310cf 100644
--- a/res/values/evolution_strings.xml
+++ b/res/values/evolution_strings.xml
@@ -27,4 +27,9 @@
Force LTE CA
Force LTE carrier aggregation to work
+
+
+ AdGuard DNS
+
+ dns.adguard.com
diff --git a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java
index be7cec58323..1caeb7de8ba 100644
--- a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java
+++ b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java
@@ -73,11 +73,13 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
// Only used in Settings, update on additions to ConnectivitySettingsUtils
private static final int PRIVATE_DNS_MODE_CLOUDFLARE = 4;
+ private static final int PRIVATE_DNS_MODE_ADGUARD = 5;
static {
PRIVATE_DNS_MAP = new HashMap<>();
PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_OFF, R.id.private_dns_mode_off);
PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_CLOUDFLARE, R.id.private_dns_mode_cloudflare);
+ PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_ADGUARD, R.id.private_dns_mode_adguard);
PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_OPPORTUNISTIC, R.id.private_dns_mode_opportunistic);
PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_PROVIDER_HOSTNAME, R.id.private_dns_mode_provider);
}
@@ -145,8 +147,12 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
ConnectivitySettingsManager.getPrivateDnsHostname(context);
final String cloudflareHostname =
context.getString(R.string.private_dns_hostname_cloudflare);
+ final String adguardHostname =
+ context.getString(R.string.private_dns_hostname_adguard);
if (privateDnsHostname.equals(cloudflareHostname)) {
mMode = PRIVATE_DNS_MODE_CLOUDFLARE;
+ } else if (privateDnsHostname.equals(adguardHostname)) {
+ mMode = PRIVATE_DNS_MODE_ADGUARD;
}
}
mRadioGroup = view.findViewById(R.id.private_dns_radio_group);
@@ -159,6 +165,9 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
final RadioButton cloudflareRadioButton =
view.findViewById(R.id.private_dns_mode_cloudflare);
cloudflareRadioButton.setText(R.string.private_dns_mode_cloudflare);
+ final RadioButton adguardRadioButton =
+ view.findViewById(R.id.private_dns_mode_adguard);
+ adguardRadioButton.setText(R.string.private_dns_mode_adguard);
final RadioButton opportunisticRadioButton =
view.findViewById(R.id.private_dns_mode_opportunistic);
opportunisticRadioButton.setText(
@@ -196,6 +205,8 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
mMode = PRIVATE_DNS_MODE_OFF;
} else if (checkedId == R.id.private_dns_mode_cloudflare) {
mMode = PRIVATE_DNS_MODE_CLOUDFLARE;
+ } else if (checkedId == R.id.private_dns_mode_adguard) {
+ mMode = PRIVATE_DNS_MODE_ADGUARD;
} else if (checkedId == R.id.private_dns_mode_opportunistic) {
mMode = PRIVATE_DNS_MODE_OPPORTUNISTIC;
} else if (checkedId == R.id.private_dns_mode_provider) {
@@ -291,6 +302,11 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
context.getString(R.string.private_dns_hostname_cloudflare);
ConnectivitySettingsManager.setPrivateDnsHostname(context, cloudflareHostname);
modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
+ } else if (mMode == PRIVATE_DNS_MODE_ADGUARD) {
+ final String adguardHostname =
+ context.getString(R.string.private_dns_hostname_adguard);
+ ConnectivitySettingsManager.setPrivateDnsHostname(context, adguardHostname);
+ modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
}
ConnectivitySettingsManager.setPrivateDnsMode(context, modeToSet);
diff --git a/src/com/android/settings/network/PrivateDnsPreferenceController.java b/src/com/android/settings/network/PrivateDnsPreferenceController.java
index 9a80d0d0b6b..9c0b9bdf00a 100644
--- a/src/com/android/settings/network/PrivateDnsPreferenceController.java
+++ b/src/com/android/settings/network/PrivateDnsPreferenceController.java
@@ -67,6 +67,7 @@ public class PrivateDnsPreferenceController extends BasePreferenceController
// Only used in Settings, update on additions to ConnectivitySettingsUtils
private static final int PRIVATE_DNS_MODE_CLOUDFLARE = 4;
+ private static final int PRIVATE_DNS_MODE_ADGUARD = 5;
private final Handler mHandler;
private final ContentObserver mSettingsObserver;
@@ -133,6 +134,7 @@ public class PrivateDnsPreferenceController extends BasePreferenceController
case PRIVATE_DNS_MODE_OFF:
return res.getString(com.android.settingslib.R.string.private_dns_mode_off);
case PRIVATE_DNS_MODE_CLOUDFLARE:
+ case PRIVATE_DNS_MODE_ADGUARD:
case PRIVATE_DNS_MODE_OPPORTUNISTIC:
return dnsesResolved ? res.getString(R.string.private_dns_mode_on)
: res.getString(
@@ -146,8 +148,12 @@ public class PrivateDnsPreferenceController extends BasePreferenceController
ConnectivitySettingsManager.getPrivateDnsHostname(mContext);
final String cloudflareHostname =
res.getString(R.string.private_dns_hostname_cloudflare);
+ final String adguardHostname =
+ res.getString(R.string.private_dns_hostname_adguard);
if (privateDnsHostname.equals(cloudflareHostname)) {
return res.getString(R.string.private_dns_mode_cloudflare);
+ } else if (privateDnsHostname.equals(adguardHostname)) {
+ return res.getString(R.string.private_dns_mode_adguard);
}
return privateDnsHostname;
}