如何从我的应用程序分享文本到WhatsApp?

43 android share android-intent whatsapp

我开发了一个具有共享文本功能的应用程序.除WhatsApp外,这个工作正常.我该怎么办?是否有任何特定的API?

小智 114

您可以使用intent来执行此操作.无需使用Whatsapp API.希望我没有误解你的问题.希望有所帮助,谢谢.

Intent whatsappIntent = new Intent(Intent.ACTION_SEND);
whatsappIntent.setType("text/plain");
whatsappIntent.setPackage("com.whatsapp");
whatsappIntent.putExtra(Intent.EXTRA_TEXT, "The text you wanted to share");
try {
    activity.startActivity(whatsappIntent);
} catch (android.content.ActivityNotFoundException ex) {
    ToastHelper.MakeShortText("Whatsapp have not been installed.");
}
Run Code Online (Sandbox Code Playgroud)

  • [我是Android开发人员,如何将WhatsApp与我的应用程序集成?](https://faq.whatsapp.com/en/android/28000012) (2认同)

Jit*_*lla 17

有两种方法可以与WhatsApp集成:

  • 通过自定义URL方案

  • 通过Android的意图系统.

如果您有一个网站并希望打开带有预填充消息的WhatsApp聊天,您可以使用我们的自定义URL方案来执行此操作.打开whatsapp:// send?text =后跟要发送的文本,将打开WhatsApp,允许用户选择联系人,并使用指定的文本预填充输入字段.

与Android上的大多数社交应用程序一样,WhatsApp倾向于分享媒体和文本.例如,只需创建共享文本的意图,系统选择器将显示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)

但是,如果您希望直接与WhatsApp共享并绕过系统选择器,则可以在意图中使用setPackage:

sendIntent.setPackage("com.whatsapp");
Run Code Online (Sandbox Code Playgroud)

这只需在调用startActivity(sendIntent)之前设置;

请参考以下链接官方WhatsApp页面:https: //www.whatsapp.com/faq/en/android/28000012,

如果您想与特定的WhatsApp联系人分享一些文字,请参阅以下代码.

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();
 }

}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅以下链接 发送文本到特定联系人(whatsapp)


小智 6

Intent share = new Intent(Intent.ACTION_SEND);
    share.setType("text/plain");
    share.putExtra(Intent.EXTRA_TEXT, "Your text");
    startActivity(Intent.createChooser(share, "Share using"));
Run Code Online (Sandbox Code Playgroud)

  • 请在答案中添加一些解释.在SO上不鼓励仅代码的答案.谢谢. (3认同)

Pri*_*nce 5

如果用户的设备中没有Wha​​tsapp应用,则该用户将收到ActivityNotFoundException

然后,您应该移动用户以首先下载该应用程序。

public void shareViaWhatsApp() {
        Intent whatsappIntent = new Intent(Intent.ACTION_SEND);
        whatsappIntent.setType("text/plain");
        whatsappIntent.setPackage("com.whatsapp");
        whatsappIntent.putExtra(Intent.EXTRA_TEXT, "Application of social rating share with your friend");
        try {
            Objects.requireNonNull(getActivity()).startActivity(whatsappIntent);
        } catch (android.content.ActivityNotFoundException ex) {
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=com.whatsapp")));
        }
    }
Run Code Online (Sandbox Code Playgroud)


小智 -9

Whats app 没有公开的官方 api....所以现在不可能。(2012 年 11 月 6 日回复)

  • Saqqib 于 2012 年 11 月 6 日得到答复。请在投票和发表评论之前检查答复日期和时间。 (46认同)
  • 可以使用 Intentintent = new Intent(Intent.ACTION_SEND); intent.setType(“文本/纯文本”); intent.setPackage(“com.whatsapp”); intent.putExtra(Intent.EXTRA_TEXT, "一些文本"); 活动.startActivity(意图); (3认同)
  • 如果您不知道,请勿发布答案! (2认同)