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

如何在非Flutter的Android项目中集成whatsapp_share2插件?

原生Android项目引入Flutter插件whatsapp_share2的方法

核心说明

whatsapp_share2是Flutter专属插件,原生Android项目无法直接将其作为gradle依赖添加,必须先完成Flutter模块与原生项目的集成,再引入该插件。

步骤1:创建Flutter模块

在你的原生Android项目的父目录下打开终端,执行以下命令创建Flutter模块:

flutter create --template module flutter_module

(flutter_module是模块名称,可根据需求自定义)

步骤2:配置原生项目的settings.gradle

在原生Android项目根目录的settings.gradle文件中,添加以下代码关联Flutter模块:

setBinding(new Binding([gradle: this]))
evaluate(new File(
    settingsDir.parentFile,
    'flutter_module/.android/include_flutter.groovy'
))

注意:路径要和你创建的Flutter模块实际路径一致,如果模块名不是flutter_module,需要对应修改。

步骤3:在app/build.gradle中添加Flutter模块依赖

打开原生项目的app/build.gradle,在dependencies代码块中添加:

implementation project(':flutter')

步骤4:在Flutter模块中引入whatsapp_share2插件

  1. 打开Flutter模块目录下的pubspec.yaml文件
  2. 在dependencies节点下添加插件依赖(替换为最新版本号):
whatsapp_share2: ^2.0.0
  1. 执行flutter pub get命令拉取插件资源

步骤5:原生Android代码中调用插件功能

需要通过FlutterEngine加载Flutter环境,再通过MethodChannel与插件通信,示例代码(Kotlin):

import io.flutter.embedding.engine.FlutterEngine
import io.flutter.embedding.engine.dart.DartExecutor
import io.flutter.plugin.common.MethodChannel
import io.flutter.embedding.engine.FlutterEngineCache

// 初始化FlutterEngine
val flutterEngine = FlutterEngine(this)
flutterEngine.dartExecutor.executeDartEntrypoint(
    DartExecutor.DartEntrypoint.createDefault()
)
// 缓存引擎,方便后续复用
FlutterEngineCache.getInstance().put("whatsapp_share_engine", flutterEngine)

// 通过MethodChannel调用分享功能
val channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "whatsapp_share2")
// 分享文本示例
channel.invokeMethod("shareText", mapOf(
    "text" to "这是要分享到WhatsApp的内容",
    "phone" to "1234567890" // 可选,指定分享目标手机号
))

替代方案:无需集成Flutter,原生实现WhatsApp分享

如果不想引入Flutter模块,可直接参考插件的原生逻辑,在原生Android项目中通过系统Intent实现分享,示例代码(Kotlin):

fun shareToWhatsApp(context: Context, content: String, targetPhone: String? = null) {
    val intent = Intent(Intent.ACTION_SEND).apply {
        type = "text/plain"
        setPackage("com.whatsapp") // 指定打开WhatsApp
        putExtra(Intent.EXTRA_TEXT, content)
        targetPhone?.let {
            data = Uri.parse("smsto:$it")
        }
    }
    if (intent.resolveActivity(context.packageManager) != null) {
        context.startActivity(intent)
    } else {
        // 处理WhatsApp未安装的情况,比如提示用户安装
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:13:27