50

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

4

9 回答 9

141

您可以使用意图来执行此操作。无需使用 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.");
}
于 2013-09-03T06:44:37.690 回答
19

与 WhatsApp 集成的方法有两种:

  • 通过自定义 URL 方案

  • 通过Android的intent系统。

如果您有一个网站并且想要打开一个带有预填充消息的 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);

但是,如果您更喜欢直接分享到 WhatsApp 并绕过系统选择器,您可以通过在您的意图中使用 setPackage 来做到这一点:

sendIntent.setPackage("com.whatsapp");

这只需在您调用 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();
 }

}

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

于 2017-04-07T14:24:29.793 回答
10

如果用户的设备中没有 Whatsapp 应用程序,那么用户将收到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")));
        }
    }
于 2018-08-10T06:34:13.143 回答
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"));
于 2016-07-18T10:49:11.760 回答
2
  Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
    sendIntent.setType("text/plain");
sendIntent.setPackage("com.whatsapp");
    startActivity(sendIntent);
于 2015-02-28T10:57:36.753 回答
1

我不是 100% 确定......但恐怕没有发布官方 API。我还想实现“向我们发送 whatsapp”功能,但我暂时放弃了,直到 whatsapp.inc 发布官方

有一些非官方的 API 但我不知道你是否想要...

http://www.whatsapp-api.com/developers.php

https://github.com/venomous0x/WhatsAPI

祝你好运……如果你发现了什么,请告诉我;)

于 2012-11-05T17:34:40.547 回答
1

您可以使用 WhatsApp API Android: http: //www.whatsapp.com/faq/en/android/28000012 iOS: http: //www.whatsapp.com/faq/en/iphone/23559013

于 2014-10-16T13:49:40.630 回答
0
 message = "this msg is sent from My App Time Track"
            val intent = Intent()//Empty as we don't know the destination i.e implicit intent
            intent.action = Intent.ACTION_SEND//intent will do work of sending something
            intent.putExtra(Intent.EXTRA_TEXT, message)//send given message
            intent.putExtra(Intent.EXTRA_SUBJECT,"Download Time Track App")//give the subject for your message
            //Intent.Extra_Text is actually a globol key
            intent.type = "plane/text"//type of intent

            startActivity(Intent.createChooser(intent,"Send to: "))//createChooser is a dialogBox which shows app available to send data
于 2018-08-31T21:14:05.773 回答
-11

什么应用程序没有公开的官方api....所以现在不可能。(2012 年 11 月 6 日回答)

于 2012-11-06T13:23:30.667 回答