diff --git a/app/src/main/java/com/hippo/ehviewer/preference/DohPreference.kt b/app/src/main/java/com/hippo/ehviewer/preference/DohPreference.kt
new file mode 100644
index 000000000..36074285d
--- /dev/null
+++ b/app/src/main/java/com/hippo/ehviewer/preference/DohPreference.kt
@@ -0,0 +1,19 @@
+package com.hippo.ehviewer.preference
+
+import android.content.Context
+import android.util.AttributeSet
+import androidx.preference.Preference
+import com.hippo.ehviewer.R
+import com.hippo.ehviewer.Settings
+import com.hippo.ehviewer.ui.legacy.EditTextDialogBuilder
+
+class DohPreference @JvmOverloads constructor(
+ context: Context,
+ attrs: AttributeSet? = null,
+) : Preference(context, attrs) {
+ override fun onClick() {
+ val builder = EditTextDialogBuilder(context, Settings.dohUrl, context.getString(R.string.settings_advanced_dns_over_http_hint))
+ builder.setTitle(R.string.settings_advanced_dns_over_http_title)
+ builder.setPositiveButton(android.R.string.ok) { _, _ -> Settings.putDohUrl(builder.text.trim()) }.show()
+ }
+}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 02daad691..17469314c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -423,6 +423,8 @@
%1$s %2$s:%3$d
%1$s
Built-in hosts.txt
+ DNS Over HTTPS
+ Server URL, blank: disable
Apply the built-in host-to-IP mapping provided by the app.\nIt can be overridden by custom hosts.txt.
Domain fronting
Bypass SNI blocking.
diff --git a/app/src/main/res/xml/advanced_settings.xml b/app/src/main/res/xml/advanced_settings.xml
index 18d7c82e4..79f6575fb 100644
--- a/app/src/main/res/xml/advanced_settings.xml
+++ b/app/src/main/res/xml/advanced_settings.xml
@@ -63,10 +63,13 @@
+
+