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?Vous devez utiliser une URL au format suivant...
https://api.whatsapp.com/send?text=text
Vous pouvez ensuite lui demander d'envoyer le texte que vous souhaitez. Vous avez également la possibilité de spécifier un numéro de téléphone...
https://api.whatsapp.com/send?text=text&phone=1234
Ce que vous NE PEUT PAS FAIRE est d'utiliser ce qui suit :
https://wa.me/send?text=text
Vous obtiendrez...
Nous n'avons pas trouvé la page que vous recherchiez.
wa.me
Cependant, il fonctionnera si vous fournissez à la fois un numéro de téléphone et un texte. Mais, dans la plupart des cas, si vous essayez de créer un lien de partage, vous ne voulez vraiment pas indiquer le numéro de téléphone, car vous voulez que l'utilisateur sélectionne quelqu'un. Dans ce cas, si vous ne fournissez pas de numéro de téléphone et que vous utilisez la fonction wa.me
comme URL, tous vos liens de partage échoueront. Veuillez utiliser app.whatsapp.com
.
Vérifiez ce code,
public void share(String subject,String text) {
final Intent intent = new Intent(Intent.ACTION_SEND);
String score=1000;
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, score);
intent.putExtra(Intent.EXTRA_TEXT, text);
startActivity(Intent.createChooser(intent, getString(R.string.share)));
}
C'est beaucoup plus long, mais ça fonctionne. Profitez de votre code :)
//method used to show IMs
private void show_custom_chooser(String value) {
List<ResolveInfo> list = null;
final Intent email = new Intent(Intent.ACTION_SEND);
email.setData(Uri.parse("sms:"));
email.putExtra(Intent.EXTRA_TEXT, "" + value);
email.setType("text/plain"); // vnd.android-dir/mms-sms
WindowManager.LayoutParams WMLP = dialogCustomChooser.getWindow()
.getAttributes();
WMLP.gravity = Gravity.CENTER;
dialogCustomChooser.getWindow().setAttributes(WMLP);
dialogCustomChooser.getWindow().setBackgroundDrawable(
new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialogCustomChooser.setCanceledOnTouchOutside(true);
dialogCustomChooser.setContentView(R.layout.about_dialog);
dialogCustomChooser.setCancelable(true);
ListView lvOfIms = (ListView) dialogCustomChooser
.findViewById(R.id.listView1);
PackageManager pm = getPackageManager();
List<ResolveInfo> launchables = pm.queryIntentActivities(email, 0);
// ////////////new
list = new ArrayList<ResolveInfo>();
for (int i = 0; i < launchables.size(); i++) {
String string = launchables.get(i).toString();
Log.d("heh", string);
//check only messangers
if (string.contains("whatsapp")) {
list.add(launchables.get(i));
}
}
Collections.sort(list, new ResolveInfo.DisplayNameComparator(pm));
int size = launchables.size();
adapter = new AppAdapter(pm, list, MainActivity.this);
lvOfIms.setAdapter(adapter);
lvOfIms.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
ResolveInfo launchable = adapter.getItem(position);
ActivityInfo activity = launchable.activityInfo;
ComponentName name = new ComponentName(
activity.applicationInfo.packageName, activity.name);
email.addCategory(Intent.CATEGORY_LAUNCHER);
email.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
email.setComponent(name);
startActivity(email);
dialogCustomChooser.dismiss();
}
});
dialogCustomChooser.show();
}
Je suis vraiment en retard ici mais je crois qu'aujourd'hui nous avons des solutions plus courtes et meilleures pour envoyer des messages via WhatsApp.
Vous pouvez utiliser ce qui suit pour appeler le sélecteur de système, puis choisir l'application que vous utiliserez pour partager ce que vous voulez.
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);
Si vous avez vraiment besoin d'envoyer par WhatsApp, tout ce que vous devez faire est le suivant (vous sauterez le sélecteur de système)
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
// Put this line here
sendIntent.setPackage("com.whatsapp");
//
startActivity(sendIntent);
Si vous avez besoin de plus d'informations, vous pouvez les trouver ici : FAQ sur WhatsApp
private fun sendWhatsappMessage(phoneNumber:String, text:String) {
val url = if (Intent().setPackage("com.whatsapp").resolveActivity(packageManager) != null) {
"whatsapp://send?text=Hello&phone=$phoneNumber"
} else {
"https://api.whatsapp.com/send?phone=$phoneNumber&text=$text"
}
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity(browserIntent)
}
C'est un moyen beaucoup plus facile d'y parvenir. Ce code vérifie si whatsapp est installé sur l'appareil. S'il est installé, il contourne le sélecteur système et va au contact sur whatsapp et pré-chiffre le texte dans le chat. S'il n'est pas installé, il ouvre le lien whatsapp sur votre navigateur web.