Android 可能对已安装的应用程序和即时应用程序使用不同的目的过滤器?

Android 可能对已安装的应用程序和即时应用程序使用不同的目的过滤器?,android,android-intent,android-manifest,android-instant-apps,android-app-bundle,Android,Android Intent,Android Manifest,Android Instant Apps,Android App Bundle,我目前正在使用旧的功能插件创建即时应用程序。在基本功能模块的AndroidManifest文件中,我有一个活动B,它侦听模式为“/pets/dogs/cages”的意图 在我的应用程序模块的AndroidManifest文件中,我有一个活动C,它侦听遵循模式“pets/.*/cages”的意图。我还使用“tools:node=“replace”为am列出了活动B,以便忽略先前在功能模块中说明的过滤器 设置此设置的原因是因为我不想拦截用户单击的所有web链接,我只想在他们已经完全安装了应用程序的情

我目前正在使用旧的功能插件创建即时应用程序。在基本功能模块的AndroidManifest文件中,我有一个活动B,它侦听模式为“/pets/dogs/cages”的意图

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

设置此设置的原因是因为我不想拦截用户单击的所有web链接,我只想在他们已经完全安装了应用程序的情况下执行此操作

这个设置对于旧的功能插件很好,但是当切换到应用包和动态功能时,我在尝试实现同样的功能时遇到了麻烦

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


有什么提示吗?

问题是,在此之前,即时应用程序中不包含应用程序模块,因此您的意图过滤器配置被排除在即时应用程序之外。从技术上讲,
tools:node=“replace“
不应该工作,因为您的
/dogs/
/..*/
意图过滤器处于不同的活动中。您可能只观察到activity-C处理所有URL,因为它的意图过滤器的覆盖范围包括B,从而赋予它更高的优先级

然而,现在,无论是安装还是即时应用,应用程序和所有模块都被合并/包括在内。因此,您的activity-C的意图过滤器起到了带头作用

一种方法是为已安装的应用程序和即时应用程序分别上传捆绑包。您的即时捆绑包配置了
/dogs/
(使用activity-C intent less),您安装的捆绑包配置了
/..*/
(使用B intent less)

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