【问题标题】:Possible to have different intent filters for installed app and instant app?安装应用和免安装应用可能有不同的意图过滤器吗?
【发布时间】:2020-02-06 04:31:52
【问题描述】:

我目前正在使用旧功能插件来创建即时应用程序。在基本功能模块的 AndroidManifest 文件中,我有 Activity B,它按照“/pets/dogs/cages”模式监听意图

在我的应用程序模块的 AndroidManifest 文件中,我有 Activity C,它按照“pets/..*/cages”模式侦听意图。我还列出了正在使用“tools:node="replace" 的活动 B,以便忽略之前在功能模块中说明的过滤器。

这个设置的原因是因为我不想拦截用户点击的所有网络链接,我只想在他们已经完全安装了应用程序的情况下这样做。

此设置适用于旧功能插件,但在切换到应用程序包和动态​​功能时,我无法尝试实现相同的功能。

在旧设置中,应用程序模块的清单具有更高的优先级。但是,当迁移到新结构时,我想将功能模块更改为新的应用程序模块,将旧的应用程序模块更改为动态功能模块。

有什么建议吗?

【问题讨论】:

    标签: android android-intent android-manifest android-instant-apps android-app-bundle


    【解决方案1】:

    问题是,在此之前,应用程序模块不包含在免安装应用中,因此您那里的意图过滤器配置已从免安装应用中排除。从技术上讲,tools:node="replace" 不应该起作用,因为您的 /dogs//..*/ 意图过滤器无论如何都在单独的活动中。您可能只观察到 Activity-C 处理所有 url,因为它的意图过滤器的覆盖范围包括 B,给予它更高的优先级。

    但是,现在,无论是安装应用程序还是即时应用程序,应用程序和所有模块都已合并/包含。因此,您的 Activity-C 的意图过滤器处于领先地位。

    一种方法是为您的已安装应用和免安装应用上传单独的捆绑包。您的即时捆绑包配置了/dogs/(带有无活动C 意图),您安装的捆绑包带有/..*/(带有无意图的B)。

    (如果可能,您也可以将 B 和 C 组合到同一个活动中,这样您就不必在两个不同的活动之间切换意图过滤器配置)

    【讨论】:

      猜你喜欢
      • 2011-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多