What
Introduce two app-wide settings under Settings → Notifications:
- Message sound — opens the system ringtone picker, stores the selected URI, and applies it to
NOISY_NOTIFICATION_CHANNEL_ID.
- Call ringtone — opens the system ringtone picker, stores the selected URI, and applies it to
RINGING_CALL_NOTIFICATION_CHANNEL_ID.
Why
- Lets users distinguish Element X notifications from other apps without changing OS-wide defaults.
- Lets users separate message tone from call ringtone. Today the ringing-call channel inherits
Settings.System.DEFAULT_RINGTONE_URI (see libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/channels/NotificationChannels.kt around line 177) and the noisy-message channel is hardcoded to R.raw.message (around lines 121–131), so users have no in-app way to differentiate the two.
- Discoverability — many users don't realize Android channel sound is configurable per-channel via system settings, so an in-app entry point matches user expectations.
How
- Persist the picked URIs in session preferences (separate keys for the message sound and the call ringtone).
- Use a channel-version counter to force
NotificationChannel recreation when the URI changes (Android only reads setSound(...) at channel-create time).
- Note: this re-introduces dynamic channel IDs that were removed in the noisy-channel cleanup at
NotificationChannels.kt lines 91–101.
Are you willing to provide a PR?
Yes
What
Introduce two app-wide settings under Settings → Notifications:
NOISY_NOTIFICATION_CHANNEL_ID.RINGING_CALL_NOTIFICATION_CHANNEL_ID.Why
Settings.System.DEFAULT_RINGTONE_URI(seelibraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/channels/NotificationChannels.ktaround line 177) and the noisy-message channel is hardcoded toR.raw.message(around lines 121–131), so users have no in-app way to differentiate the two.How
NotificationChannelrecreation when the URI changes (Android only readssetSound(...)at channel-create time).NotificationChannels.ktlines 91–101.Are you willing to provide a PR?
Yes