【问题标题】:Open App for Specifc link in browser在浏览器中打开特定链接的应用程序
【发布时间】:2014-01-07 01:51:23
【问题描述】:

我想为 特定 链接而不是特定 主机 打开我的 Android 应用,这样每当用户在浏览器中键入网址时,我的应用都应该显示在 打开方式选项。

我已经成功从浏览器链接打开我的应用程序。

例如:

如果用户键入:www.abc.com 应用不得显示在 Open with 选项中。但如果用户键入或点击 www.abc.com/video 应用程序必须显示。

我尝试了以下的不同组合,但没有一个有效。

<data android:pathPrefix="www.abc.com" android:pathPattern=".*" android:pathPrefix="/video/" android:scheme="http" />

即使我在网络浏览器中输入了 abc.com,它也会显示我的应用程序。但我想要的是,我的应用程序只有在用户输入确切的 url 时才可见,即 www.abc.com/video

【问题讨论】:

    标签: android android-intent android-browser


    【解决方案1】:

    来自 Android 文档:

    这些属性中的每一个都是可选的,但它们不是相互独立的:为了使权限有意义,还必须指定方案。要使路径有意义,必须同时指定方案和权限。

    那么你应该使用:

    android:scheme="http" android:host="www.abc.com" android:path="/video"

    【讨论】:

    • 路径值中必须包含斜线。我编辑了我的答案
    • 它有效,因为我测试了它。但是我再次阅读了您的问题,直到现在我才明白您想要什么:用户在浏览器中键入网址应该显示我的应用程序。这是不可能的!仅当您单击链接时才有效。
    • 不,这不是我要问的......我是说如果用户在 url 窗口中键入例如:“abc.com” 我的应用程序不应显示为应用程序选择器对话框中的选项.相反,如果用户仅键入“abc.com/videos”,那么我的应用程序必须在应用程序选择器对话框下的选项中可见。
    • 在 url 窗口中是什么意思?在浏览器中吗?
    【解决方案2】:

    应用所有组合后我的理解

    &lt;data android:pathPrefix="www.abc.com" android:pathPattern=".*" android:pathPrefix="/video/" android:scheme="http" /&gt;

    那是:

    1.) 浏览器在 /(slash) 运算符之前抛出了 url 部分的意图。例如: 如果我写 www.abc.com/terms,浏览器会抛出 www.abc.com 的意图。类似它还会检查 www.abc.com/videos、www.abc.com/xyz、abc.com/、abc.com/videos 和 throws 意图。

    现在,我们有责任检查传入 url 中的其他参数并检查我们要处理的 url。

    在我的例子中,如果包含第二个参数视频,我添加了检查,否则显示应用程序的主屏幕。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 2016-06-06
      • 2017-07-08
      • 1970-01-01
      相关资源
      最近更新 更多