Android 13 notification changes + target
Summary
This PR includes updates to handle the notification changes in Android 13. It adds a new screen to onboarding that requests the user to grant the notification permission on Android 13+, and also updates the app settings to check if notifications are enabled on Android 8+.
Based on my testing disabling notifications doesn't produce any major issues, this behaves the same as if notifications were manually turned off on Android 12 (Android silently blocks them, the app doesn't really notice).
There are a few notifications sent by the app that might be missed when the permission is denied. All of these notifications are for failures that will still be visible to the user, either because something isn't changing as expected or something breaks:
- notification command received but the app is missing the required permission(s)
- location disabled might result in degraded experience, on app startup
- sensor sync from core tried to enable a sensor but the app is missing the required permission(s)
- database migration failed
I've opted to show the screen in onboarding to minimal version users on all Android versions; on Android 13 denying the notification permission will also turn off the websocket service, so to provide a consistent experience I believe it makes sense to show it on all versions.
Being able to request notification permission when we want instead of when Android decides to, requires targeting Android 13 which is why I'm submitting this PR as a draft. Targeting Android 13 also results in other behavior changes, I plan to update for those changes in separate PRs first:
- [x] Log files external storage permission
- [ ] Intent filter changes - Wear libraries need a bump to the latest version, otherwise it doesn't impact the app much as described in more detail here
Once they are merged I'll rebase this.
Screenshots
| Light | Dark | |
|---|---|---|
| Permission screen in onboarding, shown after entering device name. This will be skipped when using the full version and on Android <13 or permission already granted. | ![]() |
![]() |
| Tapping Continue will show the system's permission prompt. | ![]() |
![]() |
| If the permission is denied, the app will inform you where you can change it | ![]() |
![]() |
| In the app's settings, the 'Notification Channels' setting will be replaced by the 'Notification Permission' setting if the permission is denied/all channels are turned off. Selecting it takes you to the system list of app notification channels where the permission can be granted/they can be turned on (on Android 8+). | ![]() |
![]() |
Link to pull request in Documentation repository
When making this a reviewable PR, I'll update the 'I have a notify.mobile_app_<Device_ID> service but don't receive notifications' troubleshooting step in the docs
Any other notes
The screen in onboarding is based on the iOS onboarding screen for their notification permission, but a bit more Android-ified.
I tried to make it fit in with the other screens, but every screen is using different styles and padding which makes it hard. If this PR is accepted I'll probably do another update to make onboarding more consistent. Quick example:
![]() |
![]() |
![]() |
|---|
Looks the issue has been marked as complete as of today! https://issuetracker.google.com/issues/235538840#comment23










