Cordova中intent-filter的pathPrefix失效及deeplink插件路径限制问题排查
以下是导致未授权路径仍能打开APP的几个常见原因:
intent-filter匹配逻辑疏漏
Android的intent-filter采用「只要有一个<data>条目匹配即触发」的规则。如果你的配置里存在不带路径限制的<data>节点(比如仅声明android:host="example.com"却未指定pathPrefix),或者设置了过于宽泛的前缀(比如"/"),所有子路径都会被匹配,包括你想拦截的example.com/blocked-path。Cordova配置合并冲突
Cordova构建时会自动合并多来源的intent-filter配置:包括你在config.xml里写的、第三方插件自带的,甚至之前ionic-plugin-deeplinks残留的配置。如果旧插件未完全卸载干净,它的全局匹配规则可能还留在最终生成的AndroidManifest.xml里,直接覆盖了你自定义的路径限制。pathPrefix书写错误
若pathPrefix未以斜杠开头(比如写成allowed-path而非"/allowed-path"),Android会将其视为相对路径,可能导致匹配范围超出预期。另外,多个pathPrefix的规则如果存在重叠或逻辑漏洞,也会让未授权路径被误匹配。Android系统规则缓存
Android系统会缓存APP的intent-filter规则,即使你修改了配置并重新构建,旧缓存仍可能生效。这种情况下,需要先卸载APP再重新安装,或者清除APP的「默认打开方式」设置,新规则才会生效。
内容的提问来源于stack exchange,提问作者elio

