NetToggle is a lightweight Android Quick Settings tile app for switching cellular network modes directly from the QS panel. It is built for users whose Android ROM, OEM skin, or carrier configuration hides strict 5G/4G controls or makes network mode switching inconvenient.
NetToggle uses privileged shell access through Root or Shizuku to run Android telephony commands that normal Android apps cannot access. For older devices (Android 7-11), it utilizes a seamless headless Java payload, while Android 12+ relies on native routing. Network behavior can still depend on the device, ROM, modem, SIM setup, and carrier support.
- Switch network modes directly from a Quick Settings tile
- Force 5G Only or 4G Only / LTE Only where supported
- Set Preferred 5G, Preferred 4G, Preferred 3G, or 2G Only
- Custom QS Tile Cycle: Select 2 or 3 modes to cycle through in your preferred order
- Use Root or Shizuku execution mode
- Target Auto, SIM 1, or SIM 2
- Smart Capability Filtering: Dynamically hides unsupported modes based on your device hardware capability and a built-in global 2G/3G sunset carrier registry
- Diagnostic Tracking: Built-in error reporting and shell output logs (stdout/stderr) for easy troubleshooting
- A clean, modern UI featuring interactive morphing carousels, segmented controls, and light/dark styling
Modern Android skins often restrict or completely hide advanced network mode selections (such as locking the device strictly to 5G or 4G to prevent unwanted network drops). Furthermore, standard third-party Android apps are only providing pref 4G and pref 5G, not locking to 4G only or 5G only.
NetToggle bridges this gap by completely bypassing standard Android APIs. Instead of asking the system to change the network, it executes raw baseband telephony commands (via native shell or secure service reflection) as a privileged user, enabling direct network mode switching on supported devices/ROMs.
To execute the privileged baseband commands, NetToggle requires an elevated execution environment. It features a built-in interactive setup carousel to select between two independent working modes:
- Requirements: A rooted device (e.g., Magisk, Apatch, or KernelSU).
- Requirements: The Shizuku or its working forks application installed and running.
- Auto: Detects the active data subscription and maps it to the correct physical SIM slot using native APIs.
- SIM 1: Applies network mode changes to physical SIM slot 1.
- SIM 2: Applies network mode changes to physical SIM slot 2.
This helps on dual-SIM devices where Android subscription IDs do not always match physical SIM slot numbers.
NetToggle allows you to build a personalized sequence of network modes that the Quick Settings tile will cycle through when tapped.
- Selectable Modes: You can choose from 5G Only, 4G Only, Preferred 5G, Preferred 4G, Preferred 3G, and 2G Only.
- Smart Filtering: Modes that your device hardware or specific carrier does not support (based on our 2G/3G sunset registry) will be dynamically disabled to prevent misconfiguration.
- Cycle Rules: You must select a minimum of 2 modes and a maximum of 3 modes. The order in which you select them dictates the exact order the Quick Settings tile will follow.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
- Minimum: Android 7.0, API 24
- Target: Android 16, API 36
Tested device/ROM examples include:
- Samsung One UI
- HyperOS / MIUI
- OriginOS / ColorOS / OxygenOS
- Android custom/AOSP-based ROMs
Other OEM skins and custom ROMs may also work. If NetToggle does not work on your device, you can use the built-in diagnostic dialog to copy detailed execution logs and open an issue.
NetToggle is designed to work offline.
- No ads
- No analytics
- No telemetry
- No trackers
- No internet permission
- No background network communication
- No personal data collection
- No personal data transmission
Note on Permissions: The READ_PHONE_STATE permission is strictly required to resolve active physical SIM slots via Android's native SubscriptionManager API and determine safe network capability ceilings. All processing remains 100% local.
External links are opened only when the user manually taps the GitHub or Telegram icons in the app.
NetToggle can be built using the standard Android Gradle toolchain.
git clone [https://github.com/dhangofa/NetToggle.git](https://github.com/dhangofa/NetToggle.git)
cd NetToggle
./gradlew assembleReleaseFor detailed setup instructions, troubleshooting, and answers to common questions, please refer to our official Wiki pages:
- 1. Execution Mode Configuration
- 2. Target SIM Setup & Quick Tile Cycle Guide
- 3. Adding the Tile to Quick Settings
- Frequently Asked Questions (FAQ)
For project-related questions, issue follow-up, or contact verification:
For bugs or feature requests, please use GitHub Issues when possible so device details, logs, and discussions stay trackable.
NetToggle is licensed under the GNU General Public License v3.0. See the LICENSE file for the full license text.
NetToggle uses custom vector assets created or edited for this project.
- The NetToggle launcher icon was created for this project using AI-assisted generation and manual vector editing.
- The Quick Settings network icon was created for this project.
- The app UI uses custom outlined vector icons created or edited for this project.
- The GitHub and Telegram icons are used only as external link indicators.
- GitHub trademarks remain the property of their respective owners.
- NetToggle does not use third-party icon packs as app identity assets.
See NOTICE.md for more details.










