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 ?

11voto

Ilya_Gazman Points 3685

Testé sur Guimauve S5 et ça marche !

    Uri uri = Uri.parse("smsto:" + "phone number with country code");
    Intent sendIntent = new Intent(Intent.ACTION_SENDTO, uri);
    sendIntent.setPackage("com.whatsapp");
    startActivity(sendIntent); 

Cela ouvrira une direct chatter avec une personne, si whatsapp n'est pas installé, ceci lancer une exception Si le numéro de téléphone n'est pas connu de whatsapp, ils proposeront d'envoyer une invitation par sms ou par simple message sms.

8voto

Chintan Bawa Points 1316

Voici la dernière façon d'envoyer un message via Whatsapp même si le numéro de téléphone du destinataire ne figure pas dans votre liste de contacts. Whatsapp le chat ou le téléphone Contacts liste.

private fun openWhatsApp(number: String) {
    try {
        packageManager.getPackageInfo("com.whatsapp", PackageManager.GET_ACTIVITIES)
        val intent = Intent(
            Intent.ACTION_VIEW,
            Uri.parse("https://wa.me/$number?text=I'm%20interested%20in%20your%20car%20for%20sale")
        )
        intent.setPackage("com.whatsapp")
        startActivity(intent)
    } catch (e: PackageManager.NameNotFoundException) {
        Toast.makeText(
            this,
            "Whatsapp app not installed in your phone",
            Toast.LENGTH_SHORT
        ).show()
        e.printStackTrace()
    }
}

intent.setPackage("com.whatsapp") vous permettra d'éviter Ouvrir avec et ouvrir Whatsapp directement.

Note importante : Si vous terminez en catch même si Whatsapp est installé. Veuillez ajouter queries a manifest.xml comme suit :

<queries>
   <package android:name="com.whatsapp" />
</queries>

Veuillez voir ceci réponse pour plus de détails.

7voto

milan pithadia Points 552

Utiliser ce code à une ligne pour envoyer un message via WhatsApp

//NOTE : please use with country code first 2digits without plus signed
try {
      String mobile = "911234567890";
      String msg = "Its Working";
      startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://api.whatsapp.com/send?phone=" + mobile + "&text=" + msg)));
      }catch (Exception e){
        //whatsapp app not install
     }

4voto

Abhimanyu Points 1710

Pour vérifier si WhatsApp est installé sur l'appareil et lancer "cliquer pour chatter" dans WhatsApp :

Kotlin :

try {
    // Check if whatsapp is installed
    context?.packageManager?.getPackageInfo("com.whatsapp", PackageManager.GET_META_DATA)
    val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://wa.me/$internationalPhoneNumber"))
    startActivity(intent)
} catch (e: NameNotFoundException) {
    Toast.makeText(context, "WhatsApp not Installed", Toast.LENGTH_SHORT).show()
}

Java :

try {
    // Check if whatsapp is installed
    getPackageManager().getPackageInfo("com.whatsapp", PackageManager.GET_META_DATA);
    Intent intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://wa.me/" + internationalPhoneNumber));
    startActivity(intent);
} catch (NameNotFoundException e) {
    Toast.makeText(context, "WhatsApp not Installed", Toast.LENGTH_SHORT).show();
}

getPackageInfo() jette NameNotFoundException si WhatsApp n'est pas installé.

Le site internationalPhoneNumber La variable est utilisée pour accéder au numéro de téléphone.

Référence :

3voto

black-hawk Points 121

Le code suivant est utilisé par Google Now App et ne fonctionnera PAS pour toute autre application.

J'écris ce billet parce que cela me met en colère, que WhatsApp ne permette à aucun autre développeur d'envoyer des messages directement, à l'exception de Google.

Et je veux que d'autres développeurs indépendants sachent que ce type de coopération existe, alors que Google continue à parler de "ouvert à tous" et que WhatsApp dit qu'il ne veut pas fournir d'accès aux développeurs.

Récemment, WhatsApp a ajouté un Intent spécialement pour Google Now, qui devrait ressembler à ce qui suit :

Intent intent = new Intent("com.google.android.voicesearch.SEND_MESSAGE_TO_CONTACTS");
intent.setPackage("com.whatsapp");
intent.setComponent(new ComponentName("com.whatsapp", "com.whatsapp.VoiceMessagingActivity"));

intent.putExtra("com.google.android.voicesearch.extra.RECIPIENT_CONTACT_CHAT_ID", number);
intent.putExtra("android.intent.extra.TEXT", text);
intent.putExtra("search_action_token", ?????);

Je pourrais aussi découvrir que "search_action_token" est un PendingIntent qui contient un IBinder-Object, qui est renvoyé à Google App et vérifié, s'il a été créé par Google Now.

Sinon, WhatsApp n'acceptera pas le message.

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