Skip to content

Conversation

@angrymuesli
Copy link

  • Add custom URI scheme (nctalk://conversation/{token}) for opening conversations from external launchers like KISS
  • Add HTTPS deep link support for /call/{token} URLs (fixes Open Talk links in App #847)
  • Add dynamic shortcuts for favorite/recent conversations
  • Add "Add to home screen" menu option in conversation long-press dialog
  • New DeepLinkHandler utility for parsing deep link URIs
  • New ShortcutManagerHelper utility for managing conversation shortcuts

🖼️ Screenshots

🏚️ Before 🏡 After
B A

🚧 TODO

  • ...

🏁 Checklist

  • ⛑️ Tests (unit and/or integration) are included or not needed
  • 🔖 Capability is checked or not needed
  • 🔙 Backport requests are created or not needed: /backport to stable-xx.x
  • 📅 Milestone is set
  • 🌸 PR title is meaningful (if it should be in the changelog: is it meaningful to users?)

- Add custom URI scheme (nctalk://conversation/{token}) for opening
  conversations from external launchers like KISS
- Add HTTPS deep link support for /call/{token} URLs (fixes nextcloud#847)
- Add dynamic shortcuts for favorite/recent conversations
- Add "Add to home screen" menu option in conversation long-press dialog
- New DeepLinkHandler utility for parsing deep link URIs
- New ShortcutManagerHelper utility for managing conversation shortcuts

Signed-off-by: angrymuesli <[email protected]>
@AndyScherzinger AndyScherzinger added enhancement New feature or request 3. to review Waiting for reviews labels Dec 23, 2025
@sowjanyakch
Copy link
Contributor

Thank you for the PR @angrymuesli
We will review your PR soon.

@github-actions
Copy link
Contributor

github-actions bot commented Jan 7, 2026

Hello there,
Thank you so much for taking the time and effort to create a pull request to our Nextcloud project.

We hope that the review process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR review process.

Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6

Thank you for contributing to Nextcloud and we hope to hear from you soon!

(If you believe you should not receive this message, you can add yourself to the blocklist.)

@sowjanyakch
Copy link
Contributor

@angrymuesli - I tested this PR, shortcut support for conversations work well. Opening Talk links from different domains and launching conversations via the external KISS launcher works only on Android 12 and earlier devices but not on Android 12+ devices. Deep links only work if the domain is registered via assetlinks.json. Talk is a self-hosted and can run on many different domains, it is not feasible for us to register and verify all possible domains. As a result, automatically opening Talk links from different domains in the app on Android 12+ devices is practically not implementable.

<data android:scheme="https" />
<data android:host="*" />
<data android:pathPrefix="/index.php/call/" />
</intent-filter>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The intent filter for opening talk conversation links can be removed because it does not work for Android 12+ devices.

@sowjanyakch
Copy link
Contributor

sowjanyakch commented Jan 13, 2026

To resolve linter issues, please run ./gradlew ktlintFormat

There are also some static code analysis issues, see https://app.codacy.com/gh/nextcloud/talk-android/pull-requests/5664/issues. Please feel free to fix them, or let us know if you want us to handle them.

@angrymuesli
Copy link
Author

@angrymuesli - I tested this PR, shortcut support for conversations work well. Opening Talk links from different domains and launching conversations via the external KISS launcher works only on Android 12 and earlier devices but not on Android 12+ devices. Deep links only work if the domain is registered via assetlinks.json. Talk is a self-hosted and can run on many different domains, it is not feasible for us to register and verify all possible domains. As a result, automatically opening Talk links from different domains in the app on Android 12+ devices is practically not implementable.

Hi, and thanks for the feedback! Not all of that is true. I installed a debug build based on the latest changes on my Pixel 6a running GrapheneOS (Android 16), and I could easily access Talk conversations in KISS by typing a few letters of the conversation name. Did you mean something else?

@angrymuesli
Copy link
Author

To resolve linter issues, please run ./gradlew ktlintFormat

There are also some static code analysis issues, see https://app.codacy.com/gh/nextcloud/talk-android/pull-requests/5664/issues. Please feel free to fix them, or let us know if you want us to handle them.

Sure, I'll run the linter and address the static code analysis issues. Thanks for pointing these out.

@sowjanyakch
Copy link
Contributor

sowjanyakch commented Jan 14, 2026

Hi, and thanks for the feedback! Not all of that is true. I installed a debug build based on the latest changes on my Pixel 6a running GrapheneOS (Android 16), and I could easily access Talk conversations in KISS by typing a few letters of the conversation name. Did you mean something else?

Talk conversations could be accessed on KISS launcher, however i noticed a issue - When I try to access a conversation, sometimes a different conversation opens, sometimes the requested conversation opens and sometimes it just opens the conversations list. Please see the below video and I used single account for testing purpose.

bug.in.opening.conversation.with.launcher.mov

Additionally, the other thing, that does not work is opening different domain talk links on the talk app, it redirects to web browser instead of app for Android 12+ devices.

@mahibi
Copy link
Collaborator

mahibi commented Jan 16, 2026

Thank you @angrymuesli 👍

@sowjanyakch It's important to differ between https deep links (App Links), custom URI schemes and dynamic shortcuts. All solutions are implemented in this PR.

https deep links come with the domain ownership verification problem (assetlinks.json) for newer android versions.
This is not suitable for us because each instance has a different domain.
It would only work if every domain owner would build their own version of the nextcloud talk app and take care of the verification.
I'm not sure if we're doing ourselves any favors by starting to support https deep links for older Android versions now. Users who get used to this will complain as soon as their Android version is updated and the links no longer work.

This is why we must go for custom URI schemes.
Like angrymuesli suggests
nctalk://

However we have to be careful with implementing as it should be common for all platforms.
There is already the issue created by @ShGKme :

There the suggestion is
nextcloudtalk://
as protocol name.
And it's not only the protocol name that we have to define but also the complete schema.
This is not done yet or at least there has to be the final decision from @nickvergessen .
This is why i will decline the pull request for now.
But don't get me wrong: The pull request is great and thanks for contibuting @angrymuesli
It just needs alignment with the other platforms regarding the schema.
We will make sure the schema is discussed and a final decision is made. Most probably the pull request will have to be modified because of this.

Todos:

  • decision if implementing https deep links makes sense at all as they will only work for android 12 and lower.
  • define custom URI scheme

@mahibi
Copy link
Collaborator

mahibi commented Jan 16, 2026

@angrymuesli - I tested this PR, shortcut support for conversations work well. Opening Talk links from different domains and launching conversations via the external KISS launcher works only on Android 12 and earlier devices but not on Android 12+ devices. Deep links only work if the domain is registered via assetlinks.json. Talk is a self-hosted and can run on many different domains, it is not feasible for us to register and verify all possible domains. As a result, automatically opening Talk links from different domains in the app on Android 12+ devices is practically not implementable.

Hi, and thanks for the feedback! Not all of that is true. I installed a debug build based on the latest changes on my Pixel 6a running GrapheneOS (Android 16), and I could easily access Talk conversations in KISS by typing a few letters of the conversation name. Did you mean something else?

Dynamic shortcuts work by intents as seen in
https://github.com/nextcloud/talk-android/pull/5664/changes#diff-26c7d7916feb623193bb39f5986bf3217e4eab7a7b559ef078810f5e4a1a1a55R61
so it's neither a https deep link nor a custom URI scheme.
That's why it works.

When I try to access a conversation, sometimes a different conversation opens, sometimes the requested conversation opens and sometimes it just opens the conversations list.

I did not try with KISS launcher (so could also be a bug of the launcher..). For the native android launcher it worked for me.

Copy link
Collaborator

@mahibi mahibi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see comment from #5664 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3. to review Waiting for reviews enhancement New feature or request feedback-requested

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Open Talk links in App

4 participants