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

含#符号的Deep link无法跳转至APP对应页面如何解决

带#符号的Deep Link无法跳转的解决方法

问题根因

URL中的#是标准的fragment分隔符,你使用的https://example.com/#/auth链接结构拆分如下:

  • 协议(scheme):https
  • 域名(host):example.com
  • 路径(path):/
  • 片段(fragment):/auth

Android Intent Filter的path、pathPrefix、pathPattern属性仅会匹配路径部分,不会识别#后的片段内容,因此你之前配置的android:pathPrefix="/#/auth"无法命中目标链接,导致跳转失败。

调整方案

1. 修改Manifest配置

调整data标签的匹配规则,仅匹配域名和根路径即可:

<intent-filter>
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="https" android:host="example.com" android:path="/"/>
</intent-filter>

这里使用android:path="/"而非pathPrefix,可以精准匹配根路径,避免误拦截https://example.com/xxx这类其他路径的链接。

2. Activity中二次校验分发

在目标Activity的onCreate或onNewIntent方法中解析Uri的fragment字段,判断是否为目标路径后再执行对应逻辑:

// Kotlin 示例
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    intent.data?.let { uri ->
        when (uri.fragment) {
            "/auth" -> {
                // 匹配目标链接,跳转对应认证页面
                goToAuthPage()
            }
            else -> {
                // 非目标链接,跳转浏览器打开,避免影响其他链接访问
                openInBrowser(uri)
                finish()
            }
        }
    }
}
// Java 示例
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Uri uri = getIntent().getData();
    if (uri != null) {
        String fragment = uri.getFragment();
        if ("/auth".equals(fragment)) {
            goToAuthPage();
        } else {
            openInBrowser(uri);
            finish();
        }
    }
}

可选优化方案

如果可以调整Deep Link的格式,建议去掉#将链接修改为https://example.com/auth,此时只需要将Manifest配置修改为android:pathPrefix="/auth"即可,不需要额外的代码校验,兼容性更好。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:27:02