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

如何通过地址栏打开Android应用?Deep Link粘贴无效求助

问题原因与解决办法

为什么粘贴地址栏不生效?

这不是Android的默认限制,而是浏览器地址栏的默认行为:当你把URL粘贴到地址栏并访问时,浏览器会优先尝试加载这个URL对应的网页,而非直接触发Deep Link唤起应用。但点击页面内的链接时,浏览器会识别Deep Link规则,弹出应用选择框或直接唤起,这是两种场景的处理逻辑差异。

你的配置有两处需要调整

看你贴的intent-filter代码,存在两个问题:

  • 冗余的<category android:name="android.intent.category.LAUNCHER" />:这个类别是用来让Activity显示在桌面启动器的,和Deep Link无关,留着可能导致逻辑混淆,建议删除。
  • 缺少<category android:name="android.intent.category.DEFAULT" />:没有这个类别,浏览器发起的隐式Intent无法匹配到你的Activity,这是Deep Link能被唤起的必要配置。

修正后的配置代码:

<activity
    android:name="com.webviewtestapp.MainActivity"
    android:label="@string/app_name"
    android:exported="true" >
    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.BROWSABLE" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="https" android:host="@string/deep-link"/>
    </intent-filter>
</activity>

让地址栏直接唤起应用的方案

  1. 完成App Links验证:你已经添加了android:autoVerify="true",但需要在你的域名根目录下放置assetlinks.json文件,完成网站与应用的绑定验证。验证通过后,Android系统会直接让浏览器唤起应用,跳过网页加载。
  2. 网页端添加跳转逻辑:在你的域名对应的网页里加入一段JS代码,页面加载时自动尝试唤起应用,2秒内未成功则继续显示网页内容:
window.onload = function() {
  const deepLink = 'https://你的域名/xxx';
  const startTime = Date.now();
  window.location.href = deepLink;
  
  setTimeout(() => {
    if (Date.now() - startTime < 2000) {
      // 唤起失败,可在此显示下载应用提示或网页内容
    }
  }, 2000);
};
  1. 等待浏览器自带提示:部分浏览器加载网页后,会在地址栏下方弹出“打开应用”的提示,用户点击即可唤起应用,这是浏览器自带功能,无需额外配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:30:42