【问题标题】:Let Android app handle link URLs with configurable domain让 Android 应用处理具有可配置域的链接 URL
【发布时间】:2020-03-24 05:48:04
【问题描述】:

当应用程序 registers itself 在其清单中显示为 handler for the domain 时,只需单击 http/https URL 即可从浏览器中打开 Android 应用程序。 Jissi Meet 视频会议应用程序 registers URL handlers 用于主域 meet.jit.si

但我正在运行我自己的 jitsi meet 服务器,我想分享一个视频会议的链接,该链接既可以在桌面网络浏览器中使用(显示会议的网络版本),也可以在 Android 上打开 Jitsi meet 应用程序.

当在 Jitsi 应用中更改默认域设置时,是否有某种方法可以动态修改 Android 应用中的 Intent 注册?

例子:

  1. 标准意图域是meet.jit.si
  2. 用户将应用设置中的默认域更改为meet.example.org。新的意图处理程序域是meet.example.org,当用户单击指向https://meet.example.org/dummyconf 的链接时应用程序打开
  3. 所有其他配置的域都一样。

【问题讨论】:

  • 在什么浏览器中?不止 1 个。如果您指的是 Chrome(可能是最常见的),您可以,但您需要一个非常特殊的链接。请参阅:developer.chrome.com/multidevice/android/intents 请注意,其中的意图可能不适用于所有浏览器。我不确定 Chrome 为何决定创建自己的架构。
  • 任何浏览器。桌面用户应该能够使用该链接并获取网络版本,而 Android 用户应该能够打开应用程序。
  • 那么可能无法使用单个链接。我认为并不是所有的Android浏览器都支持chrome语法,其他浏览器也不支持chrome语法。您可以通过根据引用者操作系统和浏览器名称更改链接来做到这一点。现在大多数浏览器都是 Android 上的 Chrome,所以我会先尝试使用这种格式——它也可以在桌面上运行,不确定。

标签: android android-intent self-hosting


【解决方案1】:

这是不可能的。 Intent 过滤器过于锁定:

  • 仅注册子域 (meet.*) 不起作用:android:host 支持通配符,但仅在开头(用于子域)

    星号必须是主机属性的第一个字符。

  • 只注册一个路径(任何域,/jitsi/MeetingName 作为路径)不起作用,因为

    如果没有为过滤器指定主机,则忽略端口属性和所有路径属性。

【讨论】:

    猜你喜欢
    • 2013-03-23
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    相关资源
    最近更新 更多