Settings: Add more DNS providers

Co-authored-by: Hưng Phan <phandinhhungvp2001@gmail.com>
Co-authored-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
This commit is contained in:
minaripenguin37
2022-10-16 17:28:33 +08:00
committed by Joey
parent daac5ad57c
commit 85c24e4cea
4 changed files with 93 additions and 0 deletions

View File

@@ -45,6 +45,18 @@
android:id="@+id/private_dns_mode_adguard"
layout="@layout/preference_widget_dialog_radiobutton"/>
<include
android:id="@+id/private_dns_mode_open_dns"
layout="@layout/preference_widget_dialog_radiobutton"/>
<include
android:id="@+id/private_dns_mode_cleanbrowsing"
layout="@layout/preference_widget_dialog_radiobutton"/>
<include
android:id="@+id/private_dns_mode_quad9"
layout="@layout/preference_widget_dialog_radiobutton"/>
<include
android:id="@+id/private_dns_mode_opportunistic"
layout="@layout/preference_widget_dialog_radiobutton"/>

View File

@@ -32,4 +32,19 @@
<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>
<!-- Open DNS Option -->
<string name="private_dns_mode_open_dns" translatable="false">Open DNS</string>
<!-- Open DNS hostname -->
<string name="private_dns_hostname_open_dns" translatable="false">dns.opendns.com</string>
<!-- Cleanbrowsing DNS Option -->
<string name="private_dns_mode_cleanbrowsing" translatable="false">Cleanbrowsing DNS</string>
<!-- Cleanbrowsing DNS hostname -->
<string name="private_dns_hostname_cleanbrowsing" translatable="false">security-filter-dns.cleanbrowsing.org</string>
<!-- Quad9 DNS Option -->
<string name="private_dns_mode_quad9" translatable="false">Quad9 DNS</string>
<!-- Quad9 DNS hostname -->
<string name="private_dns_hostname_quad9" translatable="false">dns.quad9.net</string>
</resources>

View File

@@ -74,12 +74,18 @@ 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;
private static final int PRIVATE_DNS_MODE_OPEN_DNS = 6;
private static final int PRIVATE_DNS_MODE_CLEANBROWSING = 7;
private static final int PRIVATE_DNS_MODE_QUAD9 = 8;
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_OPEN_DNS, R.id.private_dns_mode_open_dns);
PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_CLEANBROWSING, R.id.private_dns_mode_cleanbrowsing);
PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_QUAD9, R.id.private_dns_mode_quad9);
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);
}
@@ -149,10 +155,22 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
context.getString(R.string.private_dns_hostname_cloudflare);
final String adguardHostname =
context.getString(R.string.private_dns_hostname_adguard);
final String opendnsHostname =
context.getString(R.string.private_dns_hostname_open_dns);
final String cleanbrowsingHostname =
context.getString(R.string.private_dns_hostname_cleanbrowsing);
final String quad9Hostname =
context.getString(R.string.private_dns_hostname_quad9);
if (privateDnsHostname.equals(cloudflareHostname)) {
mMode = PRIVATE_DNS_MODE_CLOUDFLARE;
} else if (privateDnsHostname.equals(adguardHostname)) {
mMode = PRIVATE_DNS_MODE_ADGUARD;
} else if (privateDnsHostname.equals(opendnsHostname)) {
mMode = PRIVATE_DNS_MODE_OPEN_DNS;
} else if (privateDnsHostname.equals(cleanbrowsingHostname)) {
mMode = PRIVATE_DNS_MODE_CLEANBROWSING;
} else if (privateDnsHostname.equals(quad9Hostname)) {
mMode = PRIVATE_DNS_MODE_QUAD9;
}
}
mRadioGroup = view.findViewById(R.id.private_dns_radio_group);
@@ -168,6 +186,15 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
final RadioButton adguardRadioButton =
view.findViewById(R.id.private_dns_mode_adguard);
adguardRadioButton.setText(R.string.private_dns_mode_adguard);
final RadioButton opendnsRadioButton =
view.findViewById(R.id.private_dns_mode_open_dns);
opendnsRadioButton.setText(R.string.private_dns_mode_open_dns);
final RadioButton cleanbrowsingRadioButton =
view.findViewById(R.id.private_dns_mode_cleanbrowsing);
cleanbrowsingRadioButton.setText(R.string.private_dns_mode_cleanbrowsing);
final RadioButton quad9RadioButton =
view.findViewById(R.id.private_dns_mode_quad9);
quad9RadioButton.setText(R.string.private_dns_mode_quad9);
final RadioButton opportunisticRadioButton =
view.findViewById(R.id.private_dns_mode_opportunistic);
opportunisticRadioButton.setText(
@@ -207,6 +234,12 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
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_open_dns) {
mMode = PRIVATE_DNS_MODE_OPEN_DNS;
} else if (checkedId == R.id.private_dns_mode_cleanbrowsing) {
mMode = PRIVATE_DNS_MODE_CLEANBROWSING;
} else if (checkedId == R.id.private_dns_mode_quad9) {
mMode = PRIVATE_DNS_MODE_QUAD9;
} else if (checkedId == R.id.private_dns_mode_opportunistic) {
mMode = PRIVATE_DNS_MODE_OPPORTUNISTIC;
} else if (checkedId == R.id.private_dns_mode_provider) {
@@ -307,6 +340,21 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
context.getString(R.string.private_dns_hostname_adguard);
ConnectivitySettingsManager.setPrivateDnsHostname(context, adguardHostname);
modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
} else if (mMode == PRIVATE_DNS_MODE_OPEN_DNS) {
final String opendnsHostname =
context.getString(R.string.private_dns_hostname_open_dns);
ConnectivitySettingsManager.setPrivateDnsHostname(context, opendnsHostname);
modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
} else if (mMode == PRIVATE_DNS_MODE_CLEANBROWSING) {
final String cleanbrowsingHostname =
context.getString(R.string.private_dns_hostname_cleanbrowsing);
ConnectivitySettingsManager.setPrivateDnsHostname(context, cleanbrowsingHostname);
modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
} else if (mMode == PRIVATE_DNS_MODE_QUAD9) {
final String quad9Hostname =
context.getString(R.string.private_dns_hostname_quad9);
ConnectivitySettingsManager.setPrivateDnsHostname(context, quad9Hostname);
modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
}
ConnectivitySettingsManager.setPrivateDnsMode(context, modeToSet);

View File

@@ -68,6 +68,9 @@ 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 static final int PRIVATE_DNS_MODE_OPEN_DNS = 6;
private static final int PRIVATE_DNS_MODE_CLEANBROWSING = 7;
private static final int PRIVATE_DNS_MODE_QUAD9 = 8;
private final Handler mHandler;
private final ContentObserver mSettingsObserver;
@@ -135,6 +138,9 @@ public class PrivateDnsPreferenceController extends BasePreferenceController
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_OPEN_DNS:
case PRIVATE_DNS_MODE_CLEANBROWSING:
case PRIVATE_DNS_MODE_QUAD9:
case PRIVATE_DNS_MODE_OPPORTUNISTIC:
return dnsesResolved ? res.getString(R.string.private_dns_mode_on)
: res.getString(
@@ -150,10 +156,22 @@ public class PrivateDnsPreferenceController extends BasePreferenceController
res.getString(R.string.private_dns_hostname_cloudflare);
final String adguardHostname =
res.getString(R.string.private_dns_hostname_adguard);
final String opendnsHostname =
res.getString(R.string.private_dns_hostname_open_dns);
final String cleanbrowsingHostname =
res.getString(R.string.private_dns_hostname_cleanbrowsing);
final String quad9Hostname =
res.getString(R.string.private_dns_hostname_quad9);
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);
} else if (privateDnsHostname.equals(opendnsHostname)) {
return res.getString(R.string.private_dns_mode_open_dns);
} else if (privateDnsHostname.equals(cleanbrowsingHostname)) {
return res.getString(R.string.private_dns_mode_cleanbrowsing);
} else if (privateDnsHostname.equals(quad9Hostname)) {
return res.getString(R.string.private_dns_mode_quad9);
}
return privateDnsHostname;
}