73 lines
3.3 KiB
Markdown
73 lines
3.3 KiB
Markdown
# Notifications Master
|
||
|
||
Notifications Master keeps a private history of your Android notifications and
|
||
can play custom alerts for the ones that matter. It works normally without root
|
||
or an Xposed module.
|
||
|
||
## AI Assistance
|
||
|
||
This project was developed with help from AI-assisted coding tools. The design
|
||
decisions, physical device testing, and final behaviour are still manually reviewed.
|
||
|
||
## What it records
|
||
|
||
- Notifications appearing, changing, and disappearing.
|
||
- Whether a notification was dismissed by you or cancelled by its app.
|
||
- Available text, messaging-style content, and readable notification images.
|
||
- Common removal reasons such as timeouts and channel changes.
|
||
|
||
You can choose which event types to record, set app-specific allow/block lists,
|
||
and suppress routine progress or timer updates. The log view can be tailored,
|
||
expanded for long entries, and exported as CSV, aligned text, or an HTML ZIP.
|
||
Only the HTML ZIP includes saved notification images; CSV and aligned text use
|
||
an `[image]` marker instead.
|
||
|
||
## Privacy
|
||
|
||
Logs and retained notification images are encrypted on the device with an
|
||
Android Keystore key. Exporting is an explicit action and produces an
|
||
unencrypted file at the location you choose. Android may withhold sensitive or
|
||
custom notification content; this app records only what Android makes available
|
||
to a notification listener.
|
||
|
||
The optional lock protects log screens with your device biometric or credential
|
||
prompt; the alert setup remains usable. When all logging types, custom alert
|
||
rules, and direct-alert controls are disabled, the notification listener is
|
||
disabled too: the app has no polling or scheduled job to run.
|
||
|
||
## Custom alerts
|
||
|
||
Create named sound and vibration profiles, then assign them to per-app rules.
|
||
Rules can match notification text, respond to new notifications or meaningful
|
||
edits, and either play a profile, silence the original alert, or leave it
|
||
unchanged. Rules can be ordered, combined, and queued; a protected alert can
|
||
play to completion.
|
||
|
||
Without optional system integration, a matching profile plays alongside the
|
||
source app's normal alert. With a compatible LSPosed setup enabled, Notifications
|
||
Master can suppress a matched standard notification alert while leaving the
|
||
notification itself visible. It only evaluates actual posted or updated
|
||
notifications; standalone sounds and vibrations remain under the source app's
|
||
control.
|
||
|
||
To use the optional integration, enable Notifications Master as an LSPosed
|
||
module and give it the **Android/system server** scope, then restart Android.
|
||
|
||
Custom alerts respect Do Not Disturb. Android does not allow a normal app to
|
||
force direct custom sound or vibration through Do Not Disturb.
|
||
|
||
## Requirements
|
||
|
||
Notifications Master supports Android 14 through Android 16 (API levels 34–36).
|
||
After installation, grant **Notification access** when prompted. The optional
|
||
log lock uses your device's biometric or credential prompt. LSPosed integration
|
||
is optional and requires a compatible rooted device plus a system-server scope;
|
||
the notification log and ordinary custom alerts remain available without it.
|
||
|
||
Tested Android versions:
|
||
|
||
- OneUI 8.0 (Android 16) on a Galaxy Z Fold 5
|
||
- AOSP Android 14, 15, and 16 (API 34, 35, and 36) on an emulator
|
||
- Google APIs Android 15 and 16 (API 35 and 36) on an emulator
|
||
- LineageOS 22 on Android 15 and LineageOS 23 on Android 16 on an emulator
|