You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置含特殊字符的pathPrefix后Deeplink无法正常运行如何解决

失效原因

Android 的 Intent Filter 中,pathPrefix 属性仅匹配 URI 的路径部分,不会匹配查询参数内容。
标准 URI 结构为 [scheme]://[host][path]?[query]#[fragment],其中 ? 是路径和查询参数的分隔符,不属于路径的组成部分,所以你将包含 ? 的内容写到 pathPrefix 中自然无法正常匹配。

解决方案

分两种场景处理:

  • 场景1:?mypage.php 本身就是路径的一部分,不是查询参数前缀
    对特殊字符 ? 做 URL 编码转义即可,? 对应的编码值为 %3F,修改配置:
    <data android:pathPrefix="/%3Fmypage.php" />
    
  • 场景2:mypage.php 属于查询参数,完整 URI 形式为 http://www.mywebsite.com/?mypage.php
    Android 原生 Intent Filter 不支持直接匹配查询参数,可通过两种方式处理:
    1. 放宽 pathPrefix 配置,在业务层做参数校验
      先把路径匹配规则改成匹配根路径:
    <data android:pathPrefix="/" />
    
    再在跳转目标 Activity 中获取 URI 自行校验:
    Uri deeplinkUri = getIntent().getData();
    if (deeplinkUri != null && deeplinkUri.toString().startsWith("http://www.mywebsite.com/?mypage.php")) {
        // 匹配成功,执行对应业务逻辑
    }
    
    1. 使用 pathPattern 做模糊匹配
      用通配符规则匹配包含目标内容的路径,pathPattern 中 . 代表匹配任意字符,* 代表匹配0个或多个前面的字符:
    <data android:pathPattern="/.*mypage.php" />
    

内容的提问来源于stack exchange,提问作者Zammy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:36:07