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

Flutter Android13深度链接点击无法打开应用问题求助

Android 13下Flutter深度链接唤起失败及应用内元素异常问题修复

问题场景

在Android 13系统中,点击深度链接无法打开Flutter应用;直接启动应用后虽能正常导航到对应页面,但应用内部分元素点击无响应或未按预期工作。当前AndroidManifest中的intent-filter配置如下:

<intent-filter>
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />

    <data
        android:host="Example.page.link"
        android:scheme="https" />
    <data
        android:host="www.Example.com"
        android:scheme="https" />
    <data
        android:host="www.Example.com"
        android:scheme="http" />
    <data
        android:host="Example.page.link"
        android:scheme="http" />

    <data android:scheme="file" />
    <data android:host="Example.page.link" />
    <data android:mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/>
</intent-filter>

修复方案

1. 拆分intent-filter解决深度链接唤起问题

Android 13对intent-filter的匹配逻辑做了严格限制,同一个intent-filter内的所有data规则会被视为同时满足的关系,而非“或”关系。原来的配置混合了HTTP/HTTPS深度链接和file类型文件跳转规则,导致系统无法正确匹配。

需要将两种类型的规则拆分为独立的intent-filter:

  • HTTP/HTTPS深度链接专用intent-filter:
<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.page.link" />
    <data android:scheme="https" android:host="www.Example.com" />
    <data android:scheme="http" android:host="www.Example.com" />
    <data android:scheme="http" android:host="Example.page.link" />
</intent-filter>
  • File类型文件跳转专用intent-filter:
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />

    <data android:scheme="file" />
    <data android:host="Example.page.link" />
    <data android:mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/>
</intent-filter>

2. 排查应用内元素点击异常问题

直接启动应用正常,但深度链接跳转后元素异常,大概率是Intent数据处理逻辑干扰了Flutter页面状态:

  • 检查Flutter中处理深度链接的代码,确保获取Intent数据后没有阻塞UI线程,也没有错误修改状态管理库(如Provider、Riverpod)的状态。
  • 确认处理完深度链接导航后,正确释放Intent相关资源,避免后续UI交互时出现上下文冲突。
  • 排查是否因深度链接跳转创建了重复页面实例,导致点击事件被错误上下文捕获。可以在MaterialApp.onGenerateRoute中添加日志,跟踪路由创建流程。

3. 验证步骤

  • 用adb命令测试深度链接:adb shell am start -a android.intent.action.VIEW -d "https://www.Example.com/test",查看是否能唤起应用,同时检查Logcat中的Intent匹配日志。
  • 清理应用缓存后重新测试,避免旧配置缓存影响结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:13:15