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

Android Studio:Java代码实现向WhatsApp发送位置消息方案咨询

在Android应用中通过Java代码向WhatsApp联系人发送位置消息的实现方案

可以实现,以下是两种适配配送场景的具体实现方式:

方式一:唤起WhatsApp手动选择联系人分享

适合让用户自主选择收件人的场景,通过系统隐式Intent调用WhatsApp的分享功能:

// 假设已获取到位置坐标与名称
double latitude = 37.7749;
double longitude = -122.4194;
String locationName = "旧金山联合广场";

// 构建位置Uri
Uri locationUri = Uri.parse("geo:" + latitude + "," + longitude + "?q=" + latitude + "," + longitude + "(" + locationName + ")");

Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_TEXT, locationUri.toString());
sendIntent.setPackage("com.whatsapp"); // 强制指定打开WhatsApp

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

方式二:直接指定联系人发送位置

适合预先确定收件人的配送场景,需提前获取联系人的完整WhatsApp号码(带国家码,无特殊字符):

String targetPhone = "+1234567890"; // 目标联系人的WhatsApp号码
double latitude = 37.7749;
double longitude = -122.4194;
String locationName = "旧金山联合广场";

// 构建跳转Uri,自动填入位置信息
Uri chatUri = Uri.parse("https://api.whatsapp.com/send?phone=" + targetPhone + "&text=geo:" + latitude + "," + longitude + "?q=" + latitude + "," + longitude + "(" + locationName + ")");

Intent intent = new Intent(Intent.ACTION_VIEW, chatUri);
intent.setPackage("com.whatsapp");

if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
} else {
    Toast.makeText(this, "请先安装WhatsApp应用", Toast.LENGTH_SHORT).show();
}

关键注意事项

  • 权限要求:获取位置需在Manifest中声明ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION,Android 10+如需后台定位还需ACCESS_BACKGROUND_LOCATION,并完成动态权限申请。
  • 号码格式:目标号码必须是带国家码的纯数字格式(无空格、括号),否则无法匹配到对应联系人。
  • 版本兼容:WhatsApp的Uri协议可能随版本调整,需在不同版本的WhatsApp上测试兼容性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 23:32:50