DNS Toggle
A lightweight Android Quick Settings Toggle for Private DNS
[!SUMMARY]
Platform Android Languages Kotlin Skillset App Development, UI/UX Design
- ⏱ Pending availability on F-Droid
- 📥 Download from IzzyOnDroid
- 📦 Download from GitHub
- 🗎 Source code on GitHub
License: MIT
Since Android 9, it has been possible to use the
private DNS setting on devices to set a custom DNS server;
coupled with services like NextDNS, it
is one of the easiest ways of enabling system-wide tracking protection
and malware/content blocking.
This is a great security baseline
across the Android ecosystem, but it can interfere with some networks
(public access points or Hotel wireless networks), which can make it
impractical to use as it is buried in the system settings.

Though this is not the first attempt to make toggling the option more practical, and likely not the most advanced, my aim was to set up an extremely lightweight toggle for private DNS in the Android quick settings menu myself as a means to learn the basics of Android app development.
| Gallery | |||
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Over the course of a few days, I coded the app, designed its logo, and submitted it to F-Droid to make it more easily available.
UX & Requirements
To keep the user experience as frictionless and lightweight as possible, I designed the app to be effectively "invisible". It does not create an icon in the device's app drawer. Instead, everything is managed directly from the quick settings panel: a single tap toggles private DNS, and a long-press opens a minimal configuration menu where users can input custom DNS provider hostnames or rename the tile label.
Because this relies on changing a protected system setting, the app
requires the WRITE_SECURE_SETTINGS permission to function,
which must be granted via root or manually through an ADB command.



