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

如何解析Android应用内深度链接实现聊天机器人与后端交互?

Android深度链接解析最优方案

需求背景

我正在开发一款Android聊天机器人,后端会以按钮形式提供交互选项,用户点击按钮后需将所选选项回传给后端,相关深度链接由后端提供。需要解析的深度链接示例:app://app.com/dialog/submitintent?value=No%2C%20I%27d%20like%20to%20select%20character%28s%29%20to%20review&metadata=2

最优解析方案

1. 使用Android App Links(推荐)

  • 配置步骤:
    • 在AndroidManifest.xml中为处理链接的Activity添加<intent-filter>,指定android:autoVerify="true",并配置<data>标签匹配链接的scheme、host和path:
      <activity android:name=".DeepLinkHandlerActivity">
          <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="app"
                  android:host="app.com"
                  android:pathPrefix="/dialog/submitintent" />
          </intent-filter>
      </activity>
      
    • 上传数字资产链接文件(assetlinks.json)到后端服务器的.well-known目录下,完成应用与域名的关联验证,确保链接直接打开应用而非跳转浏览器。
  • 解析参数:在DeepLinkHandlerActivity的onCreate方法中,获取Intent中的数据并解析参数:
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        intent.data?.let { uri ->
            val value = uri.getQueryParameter("value")
            val metadata = uri.getQueryParameter("metadata")
            // 执行参数回传后端的逻辑
            submitSelectedOption(value, metadata)
        }
        finish() // 处理完成后关闭当前Activity
    }
    

2. 自定义Scheme(兼容旧版本)

如果需要兼容Android 6.0以下版本,可采用自定义Scheme的方式:

  • 配置Intent Filter:
    <activity android:name=".DeepLinkHandlerActivity">
        <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="app"
                android:host="app.com" />
        </intent-filter>
    </activity>
    
  • 解析逻辑:与App Links的解析方式一致,通过Intent携带的Uri获取query参数即可。

3. Jetpack Navigation组件(简化路由)

如果应用使用Jetpack Navigation管理页面路由,可直接在导航图中配置深度链接:

  • 导航图配置:
    <deepLink app:uri="app://app.com/dialog/submitintent?value={value}&metadata={metadata}" />
    
  • 接收参数:在对应的Fragment中通过navArgs()获取参数:
    val args = YourFragmentArgs.fromBundle(requireArguments())
    val value = args.value
    val metadata = args.metadata
    // 执行参数回传后端的逻辑
    

关键注意事项

  • 自动解码:链接中的参数采用URL编码(如%2C对应逗号、%27对应单引号),Android的getQueryParameter方法会自动完成解码,无需手动处理。
  • 异常处理:需判断Uri是否为空、参数是否存在,避免出现空指针异常。
  • 安全回传:解析到参数后调用后端接口时,建议添加签名验证等安全机制,确保请求的合法性。

内容的提问来源于stack exchange,提问作者Regress.arg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:02:19