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

Flutter如何实现跨应用数据传递并完成第三方应用表单自动填充

核心实现逻辑说明

url_launcher本身仅能通过自定义URL Scheme/Deep Link机制跳转其他应用,本身没有权限直接操作第三方应用的输入框,所有参数传递、字段匹配都依赖目标应用预先配置的规则。


1. 传参实现方法

所有数据都通过跳转URI的查询参数携带,你可以按照约定的参数名拼接数据,示例调用代码如下:

import 'package:url_launcher/url_launcher.dart';

Future<void> launchTargetApp() async {
  // 按目标应用约定的规则拼接URI
  final Uri targetUri = Uri(
    scheme: '自定义Scheme标识', // 比如支付宝为alipays
    path: '/约定的跳转路径', // 比如支付页对应/pay
    queryParameters: {
      // 参数名必须和目标应用约定的一致,目标应用会根据参数名对应到不同输入框
      'account': '138xxxx1234',
      'amount': '99.00',
      'username': '张三'
    },
  );
  if (await canLaunchUrl(targetUri)) {
    await launchUrl(targetUri);
  }
}

2. 不同场景的适配规则

场景1:目标应用为你方自有可控应用

你可以在目标应用内部自行定义Scheme、跳转路径、参数名规则,目标应用监听到跳转触发后,自行读取URI的查询参数,把参数值赋值到对应输入框即可。

场景2:目标应用为第三方应用(比如支付类应用)

必须严格遵循第三方官方公开的跳转传参规则:

  • 只有第三方开放了对应参数的传递规则,才能实现自动填充
  • 按官方要求的参数名拼接数据后跳转,第三方应用会自动把参数匹配到对应的输入框
  • 如果第三方没有公开对应填充规则,无法实现自动填充,url_launcher没有权限直接操作其他应用的UI控件

3. 端侧必要配置

Android端配置

需要在android/app/src/main/AndroidManifest.xml的manifest节点下添加queries声明,否则Android 11及以上版本无法识别目标应用:

<queries>
  <intent>
    <action android:name="android.intent.action.VIEW" />
    <!-- 替换为你要调用的目标应用Scheme -->
    <data android:scheme="alipays" />
  </intent>
</queries>

iOS端配置

需要在ios/Runner/Info.plist中添加Scheme白名单:

<key>LSApplicationQueriesSchemes</key>
<array>
  <!-- 替换为你要调用的目标应用Scheme -->
  <string>alipays</string>
</array>

内容的提问来源于stack exchange,提问作者Sumit Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:27:04