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

Android 12/13中Flutter应用深度链接异常:跳转至浏览器而非应用

Flutter深度链接在Android 12/13直接跳转浏览器的解决方案

针对Android 12和13上深度链接直接跳转浏览器、无应用选择弹窗的问题,可按以下步骤排查解决:

1. 修正AndroidManifest.xml的Intent Filter配置

确保Activity的<intent-filter>包含android:autoVerify="true",且显式声明android:exported="true"(Android 12+强制要求),示例配置如下:

<activity
    android:name=".MainActivity"
    android:exported="true">
    <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" />
        <!-- 替换为你的域名和scheme -->
        <data
            android:scheme="https"
            android:host="your-domain.com" />
    </intent-filter>
</activity>

注意:如果有多个域名,需在同一个<intent-filter>下添加多个<data>标签,或拆分多个带autoVerify的<intent-filter>。

  • 检查文件的Content-Type是否为application/json:执行curl -I https://your-domain.com/.well-known/assetlinks.json,确认响应头中包含Content-Type: application/json。部分服务器默认会返回text/plain,导致系统无法识别验证文件。
  • 确保文件可公开访问,无登录限制、CDN缓存拦截等情况,Android系统需要能直接获取到该文件内容。

3. 重置系统深度链接缓存

Android 12+会缓存深度链接的验证结果,需手动重置:

  • 进入系统设置→应用→你的应用→默认应用→打开链接,清除已有的默认关联设置。
  • 卸载并重装应用,触发系统重新验证assetlinks.json。调试版与发布版切换后,缓存的验证状态可能失效,重装能彻底重置。

4. 确认调试环境的签名匹配

  • 调试时,确保运行的应用签名sha256与assetlinks.json中调试版条目一致。可通过以下命令获取调试密钥指纹:
keytool -list -v -keystore ~/.android/debug.keystore

(默认调试密钥库密码为android)

5. 采用正确的测试方式

  • 避免直接在浏览器地址栏跳转链接,通过短信、备忘录等第三方应用点击测试,部分浏览器对地址栏跳转有特殊处理逻辑。
  • 使用adb命令直接测试深度链接:
adb shell am start -W -a android.intent.action.VIEW -d "https://your-domain.com/test-path" com.your.package.name

若命令能直接打开应用,说明配置本身有效,问题出在系统验证或第三方应用的链接触发逻辑上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:56:05