forked from shihaam/thijooree
54 lines
2.1 KiB
Markdown
54 lines
2.1 KiB
Markdown
# Settings — Notifications
|
|
|
|
Opt-in screen that starts / stops the `NotificationPollingService`. See [Notifications](24-notifications.md) for the polling service itself.
|
|
|
|
---
|
|
|
|
## Fragment — `SettingsNotificationsFragment`
|
|
|
|
A programmatically-built `ScrollView` containing one toggle row and one nav row.
|
|
|
|
### Enable Toggle
|
|
|
|
A `SwitchCompat` bound to the `notifications_enabled` preference (default `false`). Flipping it on triggers a multi-step setup; flipping it off stops the service and clears the pref.
|
|
|
|
---
|
|
|
|
## Enable Flow
|
|
|
|
`requestEnableNotifications()` runs a permission chain. Each step proceeds to the next on grant; cancellation reverts the switch to off.
|
|
|
|
| Step | Code path | When triggered |
|
|
|---|---|---|
|
|
| 1. POST_NOTIFICATIONS permission | `permissionLauncher` | API 33+ only — skipped on older devices |
|
|
| 2. Battery optimisation exemption | `batteryOptLauncher` | If `PowerManager.isIgnoringBatteryOptimizations(packageName) == false`, the user is sent to `Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS` |
|
|
| 3. Start service | `enableService()` | Sets `notifications_enabled = true`, calls `startForegroundService(NotificationPollingService)`, leaves the switch on |
|
|
|
|
The battery-opt step proceeds to `enableService()` regardless of the user's choice — the service will still run but Android may throttle it without the exemption.
|
|
|
|
---
|
|
|
|
## Disable Flow
|
|
|
|
`disableService()`:
|
|
|
|
1. Sets `notifications_enabled = false`
|
|
2. `stopService(NotificationPollingService)` — the foreground notification disappears
|
|
3. Switch state is forced back to off
|
|
|
|
Per-channel notification toggles remain in their last state on the system side — re-enabling re-creates the channels if needed.
|
|
|
|
---
|
|
|
|
## Open System Channels
|
|
|
|
A second row labelled "Open system notification settings" launches `Settings.ACTION_APP_NOTIFICATION_SETTINGS` with the app's package extra. This is the only way to silence individual bank+profile channels created by the polling service (`bank_bml_{loginId}`, `bank_mib_{loginId}`).
|
|
|
|
---
|
|
|
|
|
|
|
|
---
|
|
|
|
[← Circular Nav](26-circular-nav.md) **Next →** [Settings — About](28-settings-about.md)
|