Releases: Dhangofa/NetToggle
Release list
v1.0.31
NetToggle v1.0.31
Highlights
- Fixed Samsung One UI dual-SIM switching behavior.
- Added Target SIM selection with Auto, SIM 1, and SIM 2 options.
- Auto mode now resolves the active data subscription to the correct physical SIM slot before applying network mode changes.
- Added Android 10+ native subscription-to-slot mapping using SubscriptionManager.
- Added dumpsys isub fallback for older Android versions and OEM-specific subscription layouts.
- Added safe failure behavior when Auto SIM detection cannot resolve a valid SIM slot.
- Added Toast feedback when Auto SIM detection fails, asking the user to choose SIM manually.
- Added persistent app warning when Auto SIM detection fails.
- Cleared cached Quick Settings tile state when execution mode changes.
- Cleared cached Quick Settings tile state when Target SIM selection changes.
- Added boot/app-update cache invalidation to avoid stale tile state after reboot or app replacement.
- Updated network state readback to use subscription IDs for preferred_network_mode reads.
- Manual SIM readback now resolves SIM slot to subscription ID before reading preferred_network_mode.
- Expanded preferred network mode mappings for additional OEM/ROM variants.
Preferred Network Mode Mapping Improvements
-
Preferred 4G now recognizes additional legacy modes:
- 8
- 10
- 12
- 15
- 17
- 19
- 20
- 22
-
Preferred 5G now recognizes legacy modes from:
- 24 through 33
Notes
- Root or Shizuku is still required.
- Auto Target SIM is recommended for most users.
- If Auto detection does not work on a device, choose SIM 1 or SIM 2 manually from the app.
- GitHub release builds and F-Droid builds may use different signing keys, so switching between install sources may require uninstalling first.
Full Changelog: v1.0.30...v1.0.31
v1.0.30
NetToggle v1.0.30
What's Changed
- Optimize NetToggle Root/Shizuku handling and QS tile performance by @Dhangofa in #1
- Add app info, runtime version display, and developer links by @Dhangofa in #2
- Prepare NetToggle for F-Droid and add app info UI by @Dhangofa in #4
Highlights
This release focuses on improving NetToggle’s reliability, Root/Shizuku permission handling, QS tile responsiveness, active SIM handling, and overall system resource usage.
Root/Shizuku mode handling
- Fresh install no longer auto-selects Root mode.
- Added explicit execution mode states:
- No mode selected
- Root mode
- Shizuku mode
- Root permission is now checked when Root mode is selected or restored.
- Shizuku permission is requested only when the user selects Shizuku mode.
- Saved Shizuku mode now checks status without automatically showing the permission popup.
- Shizuku callbacks now update UI only when Shizuku mode is currently selected.
- Added safer cleanup for Shizuku listeners when MainActivity is destroyed.
- Added cleanup for active Root permission check process/thread when MainActivity is destroyed.
- Prevented stale Root/Shizuku permission callbacks from updating UI after MainActivity closes.
QS tile performance improvements
- Added proper network state constants instead of raw numeric state values.
- Added unknown/setup tile state instead of assuming 4G Only on first install.
- Cached generated QS tile icons to avoid recreating Bitmap/Icon objects on every tile update.
- Added immediate
Switching...tile feedback while a mode change is running. - Moved Root/Shizuku command execution off the QS tile click path.
- Added background executor for network mode switching.
- Added Android 7+ compatible main-thread UI update handling.
- Added duplicate-tap protection to avoid queuing multiple toggle commands.
- Tile state now updates only after command execution succeeds.
- Previous tile state is preserved if Root/Shizuku command execution fails.
SIM and network mode handling
- Removed hardcoded
-s 0behavior. - Added active data SIM detection using
multi_sim_data_call. - Mapped active data SIM index to phone command index:
multi_sim_data_call=1→cmd phone -s 0multi_sim_data_call=2→cmd phone -s 1
- Added current mode detection using legacy
preferred_network_mode1/2values. - Added legacy mode ID mapping:
11→ 4G Only23→ 5G Only33→ Preferred 5G9→ Preferred 4G
- Current mode is read only when cached tile state is unknown, reducing unnecessary shell/Shizuku calls during normal QS panel refresh.
Resource usage improvements
- Reduced unnecessary command execution when pulling down Quick Settings.
- Reduced CPU overhead by using cached tile state during normal QS refresh.
- Removed repeated Shizuku reflection lookup by caching the
newProcessmethod. - Cached regex pattern used for legacy mode parsing.
- Removed unused command result stderr storage.
- Added process cleanup after Root/Shizuku command execution.
Adds a lightweight app info/developer section to the NetToggle configuration screen.
- Show app title and runtime APK version.
- Add developer section with person icon and developer name.
- Add icon-only GitHub and Telegram links.
- Use lightweight VectorDrawable icons.
- Open GitHub/Telegram links externally using browser/app intent.
- Keep UI changes isolated to MainActivity and activity_main.xml.
- No QS tile behavior or background execution changes.
Notes
- Root or Shizuku is required.
- On fresh install, open the app and select either Root or Shizuku mode first.
Full Changelog: v1.0-2...v1.0.30
v1.0.2
🔄 Update Notes
This release updates the build configuration to meet the strict Free and Open Source Software ( FOSS ) requirements for inclusion in the IzzyOnDroid repository . There are no changes to the application features or user interface in this update .
Full Changelog: v1.0-1...v1.0-2
v1.0.1
🎉 Welcome to the First Release of NetToggle!
This is the initial stable release of NetToggle, a lightweight Quick Settings tile designed to force specific cellular network modes directly from your Quick Settings, bypassing OEM restrictions.
✨ Features included in v1.0-1:
- One-Tap Network Switching: Seamlessly cycle between 4G Only, 5G Only, Pref 5G, and Pref 4G directly from the Quick Settings panel.
- Dual Execution Modes:
- Root Mode (
su): For rooted users (Magisk/KernelSU/Apatch) requiring zero background overhead. - Shizuku Mode (ADB): For non-rooted users, leveraging
UID 2000shell permissions via the Shizuku app.
- Root Mode (
🛠️ Installation & Setup:
- Download the
NetToggle-v1.0.1.apkfile from the Assets section below. - Install the APK on your device.
- Open the NetToggle app from your app drawer.
- Select your preferred execution method:
- If rooted, select Root (su) and grant superuser access when prompted or in root manager.
- If non-rooted, ensure Shizuku is running in the background, select Shizuku (ADB), and tap "Allow" on the authorization popup.
- Pull down your status bar, edit your Quick Settings layout, and drag the NetToggle tile into your active panel.
⚠️ Note on MIUI/HyperOS:
If the tile does not update immediately upon tapping, ensure NetToggle is allowed to run in the background in your device's battery/app settings.
Full Changelog: https://github.com/Dhangofa/NetToggle/commits/v1.0-1