140 votes

Envoyer un message via WhatsApp

Comme j'ai trouvé d'anciens messages indiquant que whatsapp ne prend pas en charge cette fonction, je me demandais si quelque chose avait changé et s'il existait un moyen d'ouvrir un "chat" whatsapp avec un numéro que j'envoie par le biais d'une intention ?

201voto

UPDATE Veuillez vous référer à https://faq.whatsapp.com/en/Android/26000030/?category=5245251

La fonction "Cliquer pour chatter" de WhatsApp vous permet de commencer une discussion avec avec quelqu'un sans que son numéro de téléphone ne soit enregistré dans le répertoire carnet d'adresses de votre téléphone. Dès lors que vous connaissez le numéro de téléphone de cette personne, vous pouvez créer un lien qui vous permettra de commencer une conversation avec elle.

Utilisez : https://wa.me/15551234567

Ne pas utiliser : https://wa.me/+001-(555)1234567

Ejemplo: https://wa.me/15551234567?text=I'm%20interested%20in%20your%20car%20for%20sale

Réponse originale Voici la solution

public void onClickWhatsApp(View view) {

    PackageManager pm=getPackageManager();
    try {

        Intent waIntent = new Intent(Intent.ACTION_SEND);
        waIntent.setType("text/plain");
        String text = "YOUR TEXT HERE";

        PackageInfo info=pm.getPackageInfo("com.whatsapp", PackageManager.GET_META_DATA);
        //Check if package exists or not. If not then code 
        //in catch block will be called
        waIntent.setPackage("com.whatsapp");

        waIntent.putExtra(Intent.EXTRA_TEXT, text);
        startActivity(Intent.createChooser(waIntent, "Share with"));

   } catch (NameNotFoundException e) {
        Toast.makeText(this, "WhatsApp not Installed", Toast.LENGTH_SHORT)
                .show();
   }  

}

Voir aussi http://www.whatsapp.com/faq/en/Android/28000012

72voto

user2957782 Points 73

Avec ce code, vous pouvez ouvrir le chat whatsapp avec le numéro donné.

void openWhatsappContact(String number) {
    Uri uri = Uri.parse("smsto:" + number);
    Intent i = new Intent(Intent.ACTION_SENDTO, uri);
    i.setPackage("com.whatsapp");  
    startActivity(Intent.createChooser(i, ""));
}

33voto

Latief Anwar Points 460

Solution simple, essayez ceci.

String phoneNumberWithCountryCode = "+62820000000";
String message = "Hallo";

startActivity(
    new Intent(Intent.ACTION_VIEW,
        Uri.parse(
            String.format("https://api.whatsapp.com/send?phone=%s&text=%s", phoneNumberWithCountryCode, message)
        )
    )
);

25voto

Diego Points 784

J'ai trouvé la solution suivante, d'abord vous aurez besoin de l'identifiant whatsapp :

En accord avec les rapports de certains autres fils de discussion ici et dans d'autres forums, le nom de connexion que j'ai trouvé était une sorte de : indicatif régional international sans les 0 ou + au début + numéro de téléphone sans le premier 0 + @s.whatsapp.net

Par exemple, si vous vivez aux Pays-Bas et que vous avez le numéro de téléphone 0612325032, ce sera 31612325023@s.whatsapp.net -> +31 pour les Pays-Bas sans les 0 ou les + et le numéro de téléphone sans le 0.

public void sendWhatsAppMessageTo(String whatsappid) {

Cursor c = getSherlockActivity().getContentResolver().query(ContactsContract.Data.CONTENT_URI,
        new String[] { ContactsContract.Contacts.Data._ID }, ContactsContract.Data.DATA1 + "=?",
        new String[] { whatsappid }, null);
c.moveToFirst();

Intent whatsapp = new Intent(Intent.ACTION_VIEW, Uri.parse("content://com.android.contacts/data/" + c.getString(0)));
c.close();

 if (whatsapp != null) {

startActivity(whatsapp);      

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

}

17voto

Satheesh Points 202

Cela devrait fonctionner que Whatsapp soit installé ou non.

boolean isWhatsappInstalled = whatsappInstalledOrNot("com.whatsapp");
if (isWhatsappInstalled) {
    Uri uri = Uri.parse("smsto:" + "98*********7")
    Intent sendIntent = new Intent(Intent.ACTION_SENDTO, uri);
    sendIntent.putExtra(Intent.EXTRA_TEXT, "Hai Good Morning");
    sendIntent.setPackage("com.whatsapp");
    startActivity(sendIntent);
} else {
    Toast.makeText(this, "WhatsApp not Installed", Toast.LENGTH_SHORT).show();
    Uri uri = Uri.parse("market://details?id=com.whatsapp");
    Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
    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;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X