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)
很棒的 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!
我找到了正确的方法,在你阅读这篇文章后很简单: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 是否支持通过意图系统直接发送给联系人。一些快速测试应该可以让您确定这一点。
| 归档时间: |
|
| 查看次数: |
17072 次 |
| 最近记录: |