ShizuStore

SystemUI Tuner

zacharee

362 · GitHub

Download APK
Customization Android 6.0+ 2 years ago MIT
385 ShizuStore
107k GitHub
1.7k Stars
17 MB Size
Detected trackers (1)
Bugsnag Crash reporting

Matched by Exodus Privacy code signatures. Not a complete list.

More about this app

View and modify hidden settings on Android devices

About

SystemUI Tuner is an app for viewing and modifying hidden settings on Android devices.

Make sure to read the Terms for a full description and privacy policy.

Changelog

Available in CHANGELOG.md.

Downloads

You can download SystemUI Tuner from:

Google Play GitHub IzzyOnDroid

Building

SystemUI Tuner makes use of hidden APIs in Android. To avoid reflection, a special SDK JAR is used to directly access these APIs. To successfully build, you'll need to grab the Android 12L (API 32) JAR from here, and follow the instructions to install it.

Translating

Crowdin

SystemUI Tuner is on Crowdin! Check out the project page if you want to help translate the app to your language.

Languages

Error Reporting

SystemUI Tuner uses Bugsnag for error reporting as of version 350. Previous versions use Firebase Crashlytics.

Close

How Shizuku is used

Can read and change hidden system settings and grant itself setup permissions via Shizuku with `IPackageManager.grantRuntimePermission` and settings provider access.

This is an AI-assisted analysis of Shizuku-related usages in the app's public source code. It is best effort, so it may not catch every single usage.

How this app uses Shizuku

SystemUI Tuner uses Shizuku to read and change protected system settings after normal access is blocked, plus to grant itself the permissions it needs to work.

  • Read hidden settings: values the app cannot read normally are read through the Shizuku service for Global, Secure and System tables, powering status bar, navigation, demo mode and other preference screens.
  • Change System settings: System table values chosen in the app, such as lockscreen shortcuts and restored backup values, are written through the Shizuku service when a direct write is rejected.
  • Back up all settings: the full list of Global, Secure and System values used for full backup is collected through the Shizuku service when direct listing is rejected.
  • Self grant permissions: the setup flow grants the app its own runtime permissions for secure settings access, diagnostics and usage stats through the package service wrapped for Shizuku.
  • Restore saved tweaks: saved Quick Settings tiles, icon blacklist entries, immersive mode choices and other stored options are reapplied with the same read and System write path.

Android APIs or commands used

  • Settings.Global.getString
  • Settings.Secure.getString
  • Settings.System.getString
  • IContentProvider.insert
  • IContentProvider.call
  • ActivityManagerNative.getDefault
  • ActivityManagerNative.getContentProviderExternal
  • ActivityManagerNative.removeContentProviderExternal
  • ActivityThread.currentActivityThread()
  • IPackageManager.grantRuntimePermission

Notable details

The app first tries a normal settings read or write and only uses Shizuku after that fails. In the current source the Shizuku write path is wired for the System table, while Global and Secure changes rely on the directly granted permission.

Close

Changelog

What's new for version 362

See CHANGELOG.md

Close

Permissions

17 permissions requested

  • android.permission.WRITE_SECURE_SETTINGS
  • android.permission.WRITE_SETTINGS
  • android.permission.DUMP
  • android.permission.PACKAGE_USAGE_STATS
  • android.permission.QUERY_ALL_PACKAGES
  • android.permission.FOREGROUND_SERVICE
  • android.permission.FOREGROUND_SERVICE_SPECIAL_USE
  • android.permission.RECEIVE_BOOT_COMPLETED
  • android.permission.SYSTEM_ALERT_WINDOW
  • android.permission.INTERNET
  • com.android.vending.BILLING
  • android.permission.POST_NOTIFICATIONS
  • com.zacharee1.systemuituner.permission.WRITE_SETTINGS
  • moe.shizuku.manager.permission.API_V23
  • android.permission.WAKE_LOCK
  • android.permission.ACCESS_NETWORK_STATE
  • com.zacharee1.systemuituner.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
Close