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

Flutter应用中优化WhatsApp/WhatsApp Business链接处理方案求助

解决方案

1. 配置AndroidManifest.xml

在Android项目的android/app/src/main/AndroidManifest.xml中添加scheme查询权限(Android 11+必需),确保应用能检测到系统中处理whatsapp://的应用:

<queries>
  <intent>
    <action android:name="android.intent.action.VIEW" />
    <data android:scheme="whatsapp" />
  </intent>
</queries>

2. 修改Flutter代码逻辑

放弃先判断单一应用的逻辑,直接使用whatsapp:// scheme并触发系统应用选择器,跳过浏览器步骤:

void _launchWhatsApp(String phoneNumber) async {
  final Uri whatsappUri = Uri.parse('whatsapp://send?phone=$phoneNumber');
  
  if (await canLaunchUrl(whatsappUri)) {
    // 触发系统应用选择对话框,支持选择WhatsApp/WhatsApp Business
    await launchUrl(
      whatsappUri,
      mode: LaunchMode.externalApplication,
    );
  } else {
    Get.snackbar('error'.tr, 'whatsapp_error'.tr);
  }
}

代码说明:

  • 移除https://wa.me/分支:该链接会默认跳转浏览器,是导致非必要步骤的核心原因。
  • 使用LaunchMode.externalApplication:强制系统弹出应用选择器,当设备同时安装WhatsApp和WhatsApp Business时,会显示「仅本次」「始终」的选择选项,无需修改系统默认应用设置。

3. iOS端兼容配置(可选)

如果需要支持iOS,在ios/Runner/Info.plist中添加scheme查询权限:

<key>LSApplicationQueriesSchemes</key>
<array>
  <string>whatsapp</string>
</array>

原代码问题分析

  • 优先尝试打开WhatsApp Business,导致已安装该应用的设备直接跳转,不会触发选择器;未安装时才走浏览器链接,造成跨设备行为不一致。
  • https://wa.me/是网页链接,部分设备会先打开浏览器再唤起应用,增加了用户操作步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 19:07:12