我想打开WhatsApp
一个特定的对话,并用一些字符串填充文本字段.
我拥有的代码和我设法与联系人打开对话:
private void openConversationWithWhatsapp(String e164PhoneNumber){ String whatsappId = e164PhoneNumber+"@s.whatsapp.net"; Uri uri = Uri.parse("smsto:" + whatsappId); Intent intent = new Intent(Intent.ACTION_SENDTO, uri); intent.setPackage("com.whatsapp"); intent.putExtra(Intent.EXTRA_TEXT, "text"); intent.putExtra(Intent.EXTRA_SUBJECT, "subject"); intent.putExtra(Intent.EXTRA_TITLE, "title"); intent.putExtra(Intent.EXTRA_EMAIL, "email"); intent.putExtra("sms_body", "The text goes here"); intent.putExtra("text","asd"); intent.putExtra("body","body"); intent.putExtra("subject","subjhect"); startActivity(intent); }
但是文本框中没有内容.我试图查看AndroidManifest.xml
文件内部并找到有关其对话活动的以下信息:
有人知道额外使用吗?他们故意阻止这个吗?我在他们的FAQ页面中看到了他们的iOS API .
我已经做了!
private void openWhatsApp() { String smsNumber = "7****"; //without '+' try { Intent sendIntent = new Intent("android.intent.action.MAIN"); //sendIntent.setComponent(new ComponentName("com.whatsapp", "com.whatsapp.Conversation")); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.setType("text/plain"); sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send."); sendIntent.putExtra("jid", smsNumber + "@s.whatsapp.net"); //phone number without "+" prefix sendIntent.setPackage("com.whatsapp"); startActivity(sendIntent); } catch(Exception e) { Toast.makeText(this, "Error/n" + e.toString(), Toast.LENGTH_SHORT).show(); } }
可悲的是,他们没有在android上实现这个功能(也许他们将来会这样做).
我已经问了一个类似的问题,但没有结果.虽然whatsapp会对您在代码中显示的某些意图做出反应,但它们根本不会使用您发送的文本.我想这是出于安全原因,想象一下游戏商店中whatsapp-spammer应用程序的数量......我不知道它在iOS中的实现方式(及其原因)...
接近您的解决方案的两个替代方案是
发送文本并创建一个选择器(无需键入,只需选择whatsapp)
打开联系人(需要输入文本,但不需要选择联系人)
2017年更新
基于此Whatsapp常见问题解答
我正在使用这个网址
https://api.whatsapp.com/send?phone=62xxxxxxx&text=Hello,%20from%20my%20Apps
其中62是印度尼西亚的拨号代码
然后我使用这样的意图(即时通讯使用kotlin)
val uri = Uri.parse("https://api.whatsapp.com/send?phone=62xxxxxxx&text=Hello,%20from%20my%20Apps") val intent = Intent(Intent.ACTION_VIEW, uri) startActivity(intent)
用您的号码替换62xxxxx这对我来说很好