通过其他应用的whatsapp向特定联系人发送消息

时间:2013-10-12 20:59:47

标签: android

是否可以通过whatsapp直接从其他应用发送消息给特定联系人?我知道联系人ID。我不想通过Intent打开whatsapp。我只想像普通的短信一样直接发送消息。

我尝试过在stackoverflow上发布的其他解决方案,但它们对我不起作用。

6 个答案:

答案 0 :(得分:9)

让我知道它是否适合你,

Uri mUri = Uri.parse("smsto:+9876543210");
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);

答案 1 :(得分:3)

它不会一直发送消息但是让你在whatsapp中打开相同的屏幕:

private void openWhatsApp() {
    String smsNumber = "91XXXXXXXX20";
    boolean isWhatsappInstalled = whatsappInstalledOrNot("com.whatsapp");
    if (isWhatsappInstalled) {

        Intent sendIntent = new Intent("android.intent.action.MAIN");
        sendIntent.setComponent(new ComponentName("com.whatsapp", "com.whatsapp.Conversation"));
        sendIntent.putExtra("jid", PhoneNumberUtils.stripSeparators(smsNumber) + "@s.whatsapp.net");//phone number without "+" prefix

        startActivity(sendIntent);
    } else {
        Uri uri = Uri.parse("market://details?id=com.whatsapp");
        Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
        Toast.makeText(this, "WhatsApp not Installed",
                Toast.LENGTH_SHORT).show();
        startActivity(goToMarket);
    }
}

private boolean whatsappInstalledOrNot(String uri) {
    PackageManager pm = getPackageManager();
    boolean app_installed = false;
    try {
        pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
        app_installed = true;
    } catch (PackageManager.NameNotFoundException e) {
        app_installed = false;
    }
    return app_installed;
}

答案 2 :(得分:1)

请试试这个。它对我来说非常好。

    Intent sendIntent = new Intent("android.intent.action.MAIN");
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.setPackage("com.whatsapp");
    sendIntent.setType("text/plain");
    sendIntent.putExtra("jid", "9194******22" + "@s.whatsapp.net");// here 91 is country code
    sendIntent.putExtra(Intent.EXTRA_TEXT, "Demo test message");
    startActivity(sendIntent);

答案 3 :(得分:1)

这将有效,但您需要移动号码。国家/地区代码,例如India 91。 例如。 91758XXXXXX2

String url = "https://api.whatsapp.com/send?phone=" + 91758XXXXXX2 + "&text=" + URLEncoder.encode("good morning", "UTF-8");
    i.setPackage("com.whatsapp");
    i.setData(Uri.parse(url));
    if (i.resolveActivity(packageManager) != null) {
      startActivity(i);
    }

答案 4 :(得分:0)

请试试这个,

public void onClickWhatsApp(View view) {

Intent waIntent = new Intent(Intent.ACTION_SEND);
waIntent.setType("text/plain");
        String text = "YOUR TEXT HERE";
waIntent.setPackage("com.whatsapp");
if (waIntent != null) {
    waIntent.putExtra(Intent.EXTRA_TEXT, text);//
    startActivity(Intent.createChooser(waIntent, "Share with"));
} else {
    Toast.makeText(this, "WhatsApp not Installed", Toast.LENGTH_SHORT)
            .show();
}
}

来源:Please check this answer for further details

答案 5 :(得分:0)

我希望这段代码对您有帮助

String text = "This is a test";// Replace with your message.

String toNumber = "xxxxxxxxxx"; // Replace with mobile phone number without +Sign or leading zeros, but with country code
//Suppose your country is India and your phone number is “xxxxxxxxxx”, then you need to send “91xxxxxxxxxx”.


Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://api.whatsapp.com/send?phone="+toNumber +"&text="+text));
startActivity(intent);