nextcloud / nextcloud/talk-android

Feature request: integrate with Android Telecom (ConnectionService) for native call handling

Open
#6,551 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

1. to develop feature: call ☎️
Dominant language
Kotlin
Stars
739
Forks
321
Avg merge
14h 59m
Merged PRs (30d)
151

Description

Is your feature request related to a problem? Please describe.
Talk's incoming-call UI (CallNotificationActivity) is entirely custom-drawn by the app, outside Android's Telecom framework. A code search of this repo turns up zero references to ConnectionService or TelecomManager anywhere in talk-android. By contrast, apps like Signal, WhatsApp, and Google Meet register as a self-managed ConnectionService/PhoneAccount, which gets them guaranteed native incoming-call UI independent of the app's own full-screen-intent/notification-channel setup, correct interaction with Do Not Disturb "allow calls from" exceptions (a custom channel's bypassDnd flag is easy to get wrong or have silently reset), and native call-log entry plus Bluetooth/car head-unit integration shared with the rest of the OS.

I ran into this while debugging intermittent missed Talk calls on a GrapheneOS phone. Full-screen intent permission, battery optimization, Doze whitelisting, and notification channel importance were all already correctly configured, and the app rang reliably in every test I could run, including a forced deep-Doze test, so the custom call UI is mostly fine but has less of a safety net than Telecom integration would provide for edge cases I couldn't reproduce on demand.

Describe the solution you'd like
Adopt Android's self-managed ConnectionService API (PhoneAccount plus ConnectionService) for Talk calls, the same approach Signal uses, so incoming/outgoing Talk calls are treated as first-class calls by the OS instead of a custom notification-driven UI.

Describe alternatives you've considered
Continuing to tune the current custom call-notification path (full-screen intent, notification channel importance, battery whitelisting). This works when correctly configured, but is more fragile than OS-level Telecom integration and easier to silently break via unrelated OS/app updates or user settings changes.

Additional context
Happy to help test on GrapheneOS if this is picked up.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the existing CallNotificationActivity and the incoming/outgoing call flow, then confirm the Android manifest and call-handling entry points involved. Compare the current notification-driven path with the requested self-managed PhoneAccount and ConnectionService integration; done means Talk calls are handled through Android Telecom with native call UI, call-log support, and Bluetooth or car integration.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, kotlin
Domain
mobile
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.