Skip to content

Add in-app settings link to system picker for app-wide message sound and call ringtone #6672

@jennaharris7

Description

@jennaharris7

What

Introduce two app-wide settings under Settings → Notifications:

  1. Message sound — opens the system ringtone picker, stores the selected URI, and applies it to NOISY_NOTIFICATION_CHANNEL_ID.
  2. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-NotificationsO-OccasionalAffects or can be seen by some users regularly or most users rarelyS-MinorImpairs non-critical functionality or suitable workarounds existT-EnhancementNew features, changes in functionality, performance boosts, user-facing improvements

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions