Xposed module that intercepts the launches of a user-defined list of apps at the System Framework level. Those activities are never created until you authenticate via fingerprint or face unlock.
Note
Built for AOSP and Pixel. Other Android flavors may work if not heavily modified, such as One UI 8+, but others are untested. If you're on HyperOS, OxygenOS, ColorOS, etc. your device already includes a built-in app lock and you probably don't need this.
Stock Android never had a native per-app lock, and Private Space (available since Android 15 Beta 2) is a secondary isolated profile where apps run as separate installs with their own data.
This module intercepts activity launches at the system framework level before the target app starts. The Activity is never created until auth succeeds. Tapping a locked app from the recents screen is intercepted too.
Enabling the module needs one reboot so it loads at boot. After that, if your framework supports hot reload, app updates apply with no reboot. If not, you still reboot after each update. Changing which apps are locked is always instant.
- Android 13+ with an enrolled biometric
- Xposed manager with libxposed API 101 or newer (102 enables hot reload)
- Install APK from Releases
- Enable module in your Xposed manager with System Framework scope
- Reboot
- Select apps to lock in the Apps tab
Toggle in Settings → Privacy & stealth. While on, the module blocks every attempt to uninstall itself, including adb uninstall and pm uninstall, since it's enforced in the system framework.
Important
To remove the module with the toggle on:
- Turn it off in the app, then uninstall. No reboot needed.
- If for some reason you can't open the app to disable the toggle, either disable the module in your Xposed manager and reboot or boot to safe mode where Xposed is off and uninstall.
Toggle it globally in Settings or per app in its detail screen. Changes apply immediately, no reboot or hot reload. While on, an unlocked locked app's screenshots, screen recording, and recents preview are blocked. The per-app setting overrides the global one, so an app can stay blocked with the global toggle off. It cannot beat modules that force FLAG_SECURE off, like Disable Flag Secure by aviraxp.
After you turn the block off, that app's recents card can stay blank since the system cached it while the block was on. Swipe it off recents and reopen the app for a fresh preview.
Settings → About → Export logs saves the module's log lines to a text file and opens a share sheet, so you can attach them to a GitHub issue, send them by email, or share via Telegram. Reproduce the issue first, then export.
Reading the LSPosed logs needs root. Only this module's own log lines are exported, so they're safe to attach to a public issue. Debug builds help me most.