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

Android Deeplink在浏览器中无法唤起应用的问题咨询

Android Deeplink浏览器唤起问题解决方案

你遇到的问题核心是:浏览器地址栏粘贴链接时,会优先尝试加载网页内容,而非直接触发App的Intent;而adb调用、笔记应用点击属于直接触发系统Intent解析,所以能正常唤起应用。要实现像X(原Twitter)那样的浏览器唤起效果,需要从App Links配置和网页端辅助逻辑两方面入手:

一、配置Android App Links(强制关联域名与应用)

App Links是Android官方提供的机制,能让浏览器直接识别链接属于你的应用,无需用户选择。需满足以下三个条件:

1. 域名验证(关键)

在你的域名根目录(如https://www.example.com/.well-known/assetlinks.json)放置验证文件,格式如下:

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.app.package",
    "sha256_cert_fingerprints": ["你的应用签名SHA256指纹"]
  }
}]
  • 签名指纹可通过keytool -list -v -keystore 你的签名文件.jks获取
  • 确保文件能被公开访问,无404或权限限制

2. 配置Manifest的Intent Filter

在你的Activity中添加带有autoVerify="true"的Intent Filter,示例:

<activity android:name=".DeepLinkActivity">
    <intent-filter android:autoVerify="true">
        <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="www.example.com"
            android:pathPrefix="/category/" />
    </intent-filter>
</activity>
  • autoVerify="true"会让系统自动验证assetlinks.json,验证通过后浏览器会直接唤起应用

3. 验证配置是否生效

  • 安装应用后,可通过adb命令查看验证状态:
    adb shell dumpsys package domain-preferred-apps | grep your.package.name
    
  • 若显示Status: always,说明验证成功

二、网页端添加唤起辅助逻辑

即使配置了App Links,部分浏览器仍可能优先加载网页,此时需在网页端添加JS逻辑,主动尝试唤起应用:

// 检测并唤起应用
function openApp() {
    // 构造Intent链接
    const intentUrl = 'intent://www.example.com/category/dogs#Intent;scheme=https;package=com.your.app.package;end';
    // 记录唤起开始时间
    const startTime = Date.now();
    // 尝试唤起应用
    window.location.href = intentUrl;
    // 若2秒内未唤起(页面未隐藏),则留在网页并显示引导按钮
    setTimeout(() => {
        if (Date.now() - startTime < 2000) {
            document.getElementById('open-app-btn').style.display = 'block';
        }
    }, 1500);
}

// 页面加载时自动尝试唤起
window.addEventListener('load', openApp);
  • 同时在网页上添加一个"打开应用"的按钮,供用户手动点击触发Intent

三、参考X(原Twitter)的实现逻辑

X的链接能被浏览器唤起,正是结合了上述两种方案:

  1. 完成了App Links的域名验证,浏览器识别链接属于X应用
  2. 网页端加载时自动尝试唤起App,同时提供明显的"打开应用"按钮,降低用户操作成本

注意事项

  • 不同浏览器行为差异:Chrome对App Links支持最严格,Firefox、三星浏览器可能需要额外适配,建议多机型测试
  • 测试环境:若使用调试签名,需确保assetlinks.json中的指纹是调试签名的SHA256
  • 若未通过App Links验证,浏览器会显示"打开应用/打开网页"的选择弹窗,无法直接唤起

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 18:40:13