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

如何实现Chrome内点击网站内部链接唤起Android应用选择弹窗?

让Chrome内的站内链接触发Android应用选择弹窗的解决方案

我明白你的需求——外部链接能唤起应用/Chrome选择框,但Chrome内的站内跳转却直接在浏览器里完成,这确实有点恼人。其实核心原因是:Chrome内部的页面导航默认是在自身WebView里处理,不会触发系统的Intent解析流程,自然不会弹出选择框。下面给你几个可行的实现方案:

核心思路:手动触发Android Intent

要让Chrome内的链接也唤起系统选择器,我们需要主动构造Android Intent格式的链接,让Chrome识别并触发系统的应用选择逻辑。

步骤1:确认你的App已配置好链接处理

首先确保你的移动应用已经正确配置了Deep Link或App Link(你已经能通过外部链接唤起选择框,这一步应该已经完成了):

  • 应用的AndroidManifest.xml里有对应的<intent-filter>,能处理你的网站域名的HTTP/HTTPS链接
  • 如果是App Link,网站根目录已经放置了assetlinks.json文件验证所有权

步骤2:用JavaScript拦截站内链接点击

给网站内的所有站内链接添加点击拦截逻辑,替换成Intent格式的跳转,同时做fallback处理(防止用户没装App时无法正常访问)。

示例代码如下,你可以根据自己的网站技术栈调整:

// 监听所有点击事件
document.addEventListener('click', function(e) {
  // 找到被点击的链接元素
  const linkElement = e.target.closest('a');
  // 只处理本站内的链接
  if (linkElement && linkElement.href.startsWith(window.location.origin)) {
    e.preventDefault(); // 阻止默认的浏览器跳转
    const targetPath = linkElement.href.replace(window.location.origin, '');
    
    // 构造Android Intent链接,替换成你的应用包名
    const intentUrl = `intent://${targetPath}#Intent;scheme=https;package=com.your.app.package;end`;
    
    // 尝试唤起Intent(触发系统选择框)
    window.location.href = intentUrl;
    
    // 设置1秒超时,如果没唤起应用,就回退到原链接在Chrome中打开
    setTimeout(() => {
      window.location.href = linkElement.href;
    }, 1000);
  }
});

关键细节说明

  • 替换包名:一定要把代码里的com.your.app.package换成你实际的Android应用包名,否则Intent无法定位到你的应用。
  • 超时时间:1秒是比较合理的阈值,给用户足够的时间选择应用,避免过早跳回Chrome。
  • 单页应用适配:如果你的网站是React/Vue这类单页应用,需要拦截路由跳转事件(比如React的useEffect监听路由变化,Vue的router.beforeEach),用同样的Intent逻辑处理。

额外注意事项

  • 如果用户之前设置了“始终用Chrome打开”这类默认应用,系统不会再弹出选择框,这时候需要用户手动在系统设置里清除Chrome的默认关联(这是系统层面的限制,网站无法干预)。
  • 如果你用的是App Link(已验证的链接),系统默认会直接打开应用而不弹出选择框;如果想要强制弹出选择框,还是得用上面的Intent格式,或者在App的intent-filter里去掉android:autoVerify="true"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:53:37