【发布时间】:2021-05-13 20:10:59
【问题描述】:
我搜索了各种答案,但所有答案都已过时。 每当我尝试使用发送到它时,它只会打开联系人选择器。
【问题讨论】:
-
欢迎来到 SO。请看how-to-ask
我搜索了各种答案,但所有答案都已过时。 每当我尝试使用发送到它时,它只会打开联系人选择器。
【问题讨论】:
Intent sendIntent = new Intent("android.intent.action.MAIN");
sendIntent.setComponent(new ComponentName("com.whatsapp","com.whatsapp.Conversation"));
sendIntent.putExtra("jid", PhoneNumberUtils.stripSeparators("YOUR_PHONE_NUMBER")+"@s.whatsapp.net");//phone number without "+" prefix
startActivity(sendIntent);
更新:
上述技巧不能用于添加任何特定消息,因此这是新方法。在此处以国际格式传递用户 mobile,不带任何括号、破折号或加号。示例:如果用户是印度并且他的手机号码是 94xxxxxxxx ,那么国际格式将是 9194xxxxxxxx。不要错过在手机号码中添加国家代码作为前缀。
private fun sendMsg(mobile: String, msg: String){
try {
val packageManager = requireContext().packageManager
val i = Intent(Intent.ACTION_VIEW)
val url =
"https://wa.me/$mobile" + "?text=" + URLEncoder.encode(msg, "utf-8")
i.setPackage("com.whatsapp")
i.data = Uri.parse(url)
if (i.resolveActivity(packageManager) != null) {
requireContext().startActivity(i)
}
} catch (e: Exception) {
e.printStackTrace()
}
}
注意:此方法仅适用于在用户的 Whatsapp 中添加的联系人 帐户。
【讨论】:
你必须像这样在 Intent 中设置包名
intent.setPackage("com.whatsapp");
完整示例:
Uri uri = Uri.parse("smsto:" + smsNumber);
Intent i = new Intent(Intent.ACTION_SENDTO, uri);
i.putExtra("sms_body", smsText);
i.setPackage("com.whatsapp");
startActivity(i);
【讨论】:
您只需在点击按钮上触发以下意图:
Uri mUri = Uri.parse("smsto:" + mobile1);
Intent mIntent = new Intent(Intent.ACTION_SENDTO, mUri);
mIntent.setPackage("com.whatsapp");
mIntent.putExtra("sms_body", "The text goes here");
mIntent.putExtra("chat", true);
startActivity(Intent.createChooser(mIntent, ""));
如果whatsapp 上有可用的号码,则该特定用户聊天打开并发送您的消息。如果whatsapp 上没有可用的号码,则在这种情况下打开警报对话框。
希望这对你有帮助;-)
【讨论】:
解决办法
private void openWhatsApp(String number) {
String whatsAppMessage = "Hello!";
Uri uri = Uri.parse("smsto:" + number);
Intent i = new Intent(Intent.ACTION_SENDTO, uri);
i.setPackage("com.whatsapp");
startActivity(i);
}
调用上述函数并传递号码,通过该号码在Whatsapp messenger中打开聊天。
希望它对你有用。 :)
【讨论】: