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

如何通过SendIntent向指定WhatsApp号码分享文本数据?

问题分析与正确实现方案

你的这段代码存在核心错误,最后一行把Intent对象直接拼接进URL的写法完全不合法,同时混用了两种不同的WhatsApp分享方式,导致功能无法正常工作。以下是具体问题和正确实现方案:

原代码的关键错误

  • 错误地将sendIntent对象直接拼接到URL字符串中,这会导致生成的URL格式完全无效,无法触发WhatsApp的分享流程。
  • 同时使用了ACTION_SEND Intent和WhatsApp的URL Scheme两种方式,二者逻辑冲突,无法协同工作。

正确实现方案(两种可选方式)

方式一:使用WhatsApp URL Scheme(推荐)

通过官方提供的URL Scheme直接打开指定号码的聊天窗口并预填分享内容:

// 1. 拼接完整的分享文本
String shareTitle = android.text.Html.fromHtml(post.recipe_title).toString();
String shareContent = android.text.Html.fromHtml(getResources().getString(R.string.share_text)).toString();
String shareAddress = android.text.Html.fromHtml(user.Address).toString();
String sharePincode = android.text.Html.fromHtml(user.PinCode).toString();
String shareState = android.text.Html.fromHtml(user.State).toString();
String appLink = "https://play.google.com/store/apps/details?id=" + BuildConfig.APPLICATION_ID;

String fullShareText = shareTitle + "\n\n" + shareContent + "\n\n" + shareAddress + "\n\n" + sharePincode + "\n\n" + shareState + "\n\n" + appLink;

// 2. 构造WhatsApp的URL Scheme,号码需带国家码(无+号)
String phoneNumber = "919773207706"; // 示例中的印度国家码+手机号
String whatsappUrl = "https://api.whatsapp.com/send?phone=" + phoneNumber + "&text=" + Uri.encode(fullShareText);

// 3. 触发Intent打开链接
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(whatsappUrl));
intent.setPackage("com.whatsapp"); // 强制使用WhatsApp,避免其他应用处理

// 检查设备是否安装了WhatsApp
if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
} else {
    // 处理未安装WhatsApp的情况,比如提示用户安装
    Toast.makeText(this, "请先安装WhatsApp应用", Toast.LENGTH_SHORT).show();
}

方式二:使用ACTION_SENDTO Intent

通过系统Intent直接发送到指定WhatsApp号码:

// 1. 拼接分享文本(同方式一)
String shareTitle = android.text.Html.fromHtml(post.recipe_title).toString();
String shareContent = android.text.Html.fromHtml(getResources().getString(R.string.share_text)).toString();
String shareAddress = android.text.Html.fromHtml(user.Address).toString();
String sharePincode = android.text.Html.fromHtml(user.PinCode).toString();
String shareState = android.text.Html.fromHtml(user.State).toString();
String appLink = "https://play.google.com/store/apps/details?id=" + BuildConfig.APPLICATION_ID;

String fullShareText = shareTitle + "\n\n" + shareContent + "\n\n" + shareAddress + "\n\n" + sharePincode + "\n\n" + shareState + "\n\n" + appLink;

// 2. 构造ACTION_SENDTO Intent,指定WhatsApp号码
Uri uri = Uri.parse("smsto:" + "919773207706");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.setPackage("com.whatsapp");
intent.putExtra("sms_body", fullShareText);
intent.putExtra("chat", true);

// 检查设备是否安装了WhatsApp
if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
} else {
    Toast.makeText(this, "请先安装WhatsApp应用", Toast.LENGTH_SHORT).show();
}

注意事项

  • 手机号码必须包含完整的国家码(如示例中的91是印度国家码),且不能带有+号。
  • 分享文本需要用Uri.encode()编码,避免特殊字符导致URL失效(方式一需要,方式二无需手动编码)。
  • 必须添加WhatsApp应用存在性检查,避免因未安装应用导致崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:43:11