如何从我的Android应用程序通过WhatsApp向特定联系人发送消息?

Joh*_*Moo 4 java android android-intent whatsapp start-activity

我正在开发一个Android应用程序,我需要向WhatsApp的特定联系人发送消息.我试过这段代码:

Uri mUri = Uri.parse("smsto:+999999999");
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(mIntent);
Run Code Online (Sandbox Code Playgroud)

问题是虽然选择了联系人,但WhatsApp上没有收到参数"sms_body".

Ris*_*rya 18

有一种方法.确保您提供的联系人必须在意图中作为字符串传递,而不带前缀"+".国家/地区代码应作为电话号码的前缀附加.

例如:'+ 918547264285'应作为'918547264285'传递.这里的'91'开头是国家代码.

注意:将"YOUR_PHONE_NUMBER"替换为您要向其发送邮件的联系人.

这是片段:

 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");
 startActivity(sendIntent);
Run Code Online (Sandbox Code Playgroud)

  • 它打开特别的whasts app聊天,但不发送消息. (5认同)

Pio*_*eer 5

很棒的 hack Rishabh,非常感谢,自过去 3 年以来我一直在寻找这个解决方案。

根据上面 Rishabh Maurya 的回答,我已经实现了这段代码,该代码对于 WhatsApp 上的文本和图像共享都运行良好。我已经在我的 Android 应用程序中发布了此内容,所以如果您想实时观看它,请尝试我的应用程序Bill Book

请注意,在这两种情况下,它都会打开一个 Whatsapp 对话(如果用户 Whatsapp 联系人列表中存在 toNumber),但用户必须单击“发送”按钮才能完成该操作。这意味着它有助于跳过联系人选择步骤。

对于短信

String toNumber = "+91 98765 43210"; // contains spaces.
toNumber = toNumber.replace("+", "").replace(" ", "");

Intent sendIntent = new Intent("android.intent.action.MAIN");
sendIntent.putExtra("jid", toNumber + "@s.whatsapp.net");
sendIntent.putExtra(Intent.EXTRA_TEXT, message);
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setPackage("com.whatsapp");
sendIntent.setType("text/plain");
startActivity(sendIntent);
Run Code Online (Sandbox Code Playgroud)

用于共享图像

String toNumber = "+91 98765 43210"; // contains spaces.
toNumber = toNumber.replace("+", "").replace(" ", "");

Intent sendIntent = new Intent("android.intent.action.MAIN");
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(imageFile));
sendIntent.putExtra("jid", toNumber + "@s.whatsapp.net");
sendIntent.putExtra(Intent.EXTRA_TEXT, message);
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setPackage("com.whatsapp");
sendIntent.setType("image/png");
context.startActivity(sendIntent);
Run Code Online (Sandbox Code Playgroud)

享受WhatsApp!

  • 这是迄今为止最好的解决方案..@Sail 如果您在不按发送按钮的情况下获得了发送解决方案,请通知我 (3认同)

Cro*_*ono 5

我找到了正确的方法,在你阅读这篇文章后很简单:http : //howdygeeks.com/send-whatsapp-message-unsaved-number-android/

电话和消息都是字符串。

源代码:

try {

    PackageManager packageManager = context.getPackageManager();
    Intent i = new Intent(Intent.ACTION_VIEW);

    String url = "https://api.whatsapp.com/send?phone="+ phone +"&text=" + URLEncoder.encode(message, "UTF-8");
    i.setPackage("com.whatsapp");
    i.setData(Uri.parse(url));
    if (i.resolveActivity(packageManager) != null) {
        context.startActivity(i);
    }
} catch (Exception e){
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

享受!


小智 5

这种新方法通过Android中的whatsapp向特定联系人发送消息。欲了解更多信息,请点击这里

            Intent sendIntent = new Intent();
            sendIntent.setAction(Intent.ACTION_VIEW);
            String url = "https://api.whatsapp.com/send?phone=" + number + "&text=" + path;
            sendIntent.setData(Uri.parse(url));
            activity.startActivity(sendIntent);here
Run Code Online (Sandbox Code Playgroud)


Nat*_*ers -2

尝试使用Intent.EXTRA_TEXT而不是sms_body作为您的额外密钥。根据 WhatsApp 的文档,这是您必须使用的。

他们网站上的一个例子:

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(sendIntent);
Run Code Online (Sandbox Code Playgroud)

他们的示例使用Intent.ACTION_SEND而不是Intent.ACTION_SENDTO,所以我不确定 WhatsApp 是否支持通过意图系统直接发送给联系人。一些快速测试应该可以让您确定这一点。

  • 问题是:“我需要从 WhatsApp 向特定联系人发送消息”。那么为什么这是公认的答案呢? (2认同)