Settings: Add AdGuard DNS as a private DNS Provider

Co-authored-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
This commit is contained in:
Adam Lawson
2022-01-04 08:45:51 +00:00
committed by Joey
parent 45939de619
commit daac5ad57c
4 changed files with 31 additions and 0 deletions

View File

@@ -41,6 +41,10 @@
android:id="@+id/private_dns_mode_cloudflare"
layout="@layout/preference_widget_dialog_radiobutton"/>
<include
android:id="@+id/private_dns_mode_adguard"
layout="@layout/preference_widget_dialog_radiobutton"/>
<include
android:id="@+id/private_dns_mode_opportunistic"
layout="@layout/preference_widget_dialog_radiobutton"/>

View File

@@ -27,4 +27,9 @@
<!-- Force LTE_CA -->
<string name="force_lte_ca">Force LTE CA</string>
<string name="force_lte_ca_summary">Force LTE carrier aggregation to work</string>
<!-- AdGuard DNS Option -->
<string name="private_dns_mode_adguard" translatable="false">AdGuard DNS</string>
<!-- AdGuard DNS hostname -->
<string name="private_dns_hostname_adguard" translatable="false">dns.adguard.com</string>
</resources>

View File

@@ -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);

View File

@@ -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;
}