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 ?
Réponses
Trop de publicités?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.
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.
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
}
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 :
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.