Ich wollte wissen, wie ich Text an einen bestimmten WhatsApp-Kontakt senden kann. Ich habe Code gefunden, um einen bestimmten Kontakt anzuzeigen, aber keine Daten zu senden.
Cursor c = getContentResolver().query(ContactsContract.Data.CONTENT_URI,
new String[] { ContactsContract.Contacts.Data._ID }, ContactsContract.Data.DATA1 + "=?",
new String[] { id }, null);
c.moveToFirst();
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("content://com.Android.contacts/data/" + c.getString(0)));
startActivity(i);
c.close();
Dies funktioniert gut, um einen WhatsApp-Kontakt anzuzeigen, aber wie kann ich jetzt Text hinzufügen? Oder hat der Whatsapp-Entwickler nicht so eine API implementiert?
Dies ist jetzt über die WhatsApp Business API möglich. Nur Unternehmen können die Verwendung beantragen. Dies ist die einzige Möglichkeit, Nachrichten direkt an Telefonnummern ohne menschliche Interaktion zu senden.
Das Versenden normaler Nachrichten ist kostenlos. Anscheinend müssen Sie eine MySQL-Datenbank und den WhatsApp Business Client auf Ihrem Server hosten.
Ich denke, die Antwort ist eine Mischung aus Ihrer Frage und dieser Antwort hier: https://stackoverflow.com/a/15931345/734687 .__ Ich würde den folgenden Code versuchen:
Intent i = new Intent(Intent.ACTION_SENDTO, Uri.parse("content://com.Android.contacts/data/" + c.getString(0)));
i.setType("text/plain");
i.setPackage("com.whatsapp"); // so that only Whatsapp reacts and not the chooser
i.putExtra(Intent.EXTRA_SUBJECT, "Subject");
i.putExtra(Intent.EXTRA_TEXT, "I'm the body.");
startActivity(i);
Ich habe mir das Whatsapp-Manifest angesehen und festgestellt, dass ACTION_SEND für die Aktivität ContactPicker
registriert ist, so dass es Ihnen nicht weiterhilft. Allerdings ist ACTION_SENDTO für die Aktivität com.whatsapp.Conversation
registriert, was für Ihr Problem angemessener klingt.
WhatsApp kann als Ersatz für das Versenden von SMS verwendet werden. Es sollte also wie SMS funktionieren. Wenn Sie die gewünschte Anwendung nicht angeben (über setPackage
), zeigt Android die Anwendungsauswahl an. Hierfür sollten Sie nur den Code für das Senden von SMS über Absicht betrachten und dann die zusätzlichen Paketinformationen angeben.
Uri uri = Uri.parse("smsto:" + smsNumber);
Intent i = new Intent(Intent.ACTION_SENDTO, uri);
i.putExtra("sms_body", smsText);
i.setPackage("com.whatsapp");
startActivity(i);
Versuchen Sie zunächst, nur die Absicht ACTION_SEND
durch ACTION_SENDTO
zu ersetzen. Wenn dies nicht funktioniert, geben Sie den zusätzlichen Code sms_body
an. Wenn dies nicht funktioniert, versuchen Sie, den URI zu ändern.
Update Ich habe versucht, das Problem selbst zu lösen und konnte keine Lösung finden. Whatsapp öffnet den Chat-Verlauf, nimmt den Text jedoch nicht und sendet ihn. Es scheint, dass diese Funktionalität einfach nicht implementiert ist.
Ich habe es getan!
private void openWhatsApp() {
String smsNumber = "7****"; // E164 format without '+' sign
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.putExtra("jid", smsNumber + "@s.whatsapp.net"); //phone number without "+" prefix
sendIntent.setPackage("com.whatsapp");
if (intent.resolveActivity(getActivity().getPackageManager()) == null) {
Toast.makeText(this, "Error/n" + e.toString(), Toast.LENGTH_SHORT).show();
return;
}
startActivity(sendIntent);
}
Ich habe den richtigen Weg gefunden und es ist so einfach, dass Sie nur diesen Artikel lesen müssen: http://howdygeeks.com/send-whatsapp-message-unsaved-number-Android/
Quellcode: phone
und message
sind beide String
.
PackageManager packageManager = context.getPackageManager();
Intent i = new Intent(Intent.ACTION_VIEW);
try {
String url = "https://api.whatsapp.com/send?phone="+ phone +"&text=" + URLEncoder.encode(message, "UTF-8");
i.setPackage("com.whatsapp");
i.setData(Uri.parse(url));
if (i.resolveActivity(packageManager) != null) {
context.startActivity(i);
}
} catch (Exception e){
e.printStackTrace();
}
Genießen!
Sie können den WhatsApp-Unterhaltungsbildschirm für den Benutzer öffnen, mit dem Sie kommunizieren möchten:
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;
}
Dieser Ansatz funktioniert auch mit der WhatsApp Business App!
Ändern Sie den Paketnamen als sendIntent.setPackage ("com.whatsapp.w4b"); für WhatsApp Business.
Toller Hack Rishabh, vielen Dank, ich habe diese Lösung seit 3 Jahren gesucht.
Wie in der obigen Antwort des Rishabh Maurya beschrieben, habe ich diesen Code implementiert, der sowohl für die Text- als auch die Bildfreigabe auf WhatsApp geeignet ist.
Beachten Sie, dass in beiden Fällen eine WhatsApp-Konversation geöffnet wird (wenn toNumber in der WhatsApp-Kontaktliste von Benutzern vorhanden ist). Der Benutzer muss jedoch auf die Schaltfläche Senden klicken, um die Aktion abzuschließen. Das heißt, es hilft beim Überspringen des Kontaktauswahlschritts.
Für Kurzmitteilungen
String toNumber = "+91 98765 43210"; // contains spaces.
toNumber = toNumber.replace("+", "").replace(" ", "");
Intent sendIntent = new Intent("Android.intent.action.MAIN");
sendIntent.putExtra("jid", toNumber + "@s.whatsapp.net");
sendIntent.putExtra(Intent.EXTRA_TEXT, message);
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setPackage("com.whatsapp");
sendIntent.setType("text/plain");
startActivity(sendIntent);
Für das Teilen von Bildern
String toNumber = "+91 98765 43210"; // contains spaces.
toNumber = toNumber.replace("+", "").replace(" ", "");
Intent sendIntent = new Intent("Android.intent.action.MAIN");
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(imageFile));
sendIntent.putExtra("jid", toNumber + "@s.whatsapp.net");
sendIntent.putExtra(Intent.EXTRA_TEXT, message);
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setPackage("com.whatsapp");
sendIntent.setType("image/png");
context.startActivity(sendIntent);
Genießen Sie was!
Überprüfen Sie meine Antwort: https://stackoverflow.com/a/40285262/5879376
Intent sendIntent = new Intent("Android.intent.action.MAIN");
sendIntent.setComponent(new ComponentName("com.whatsapp","com.whatsapp.Conversation"));
sendIntent.putExtra("jid", PhoneNumberUtils.stripSeparators("YOUR_PHONE_NUMBER")+"@s.whatsapp.net");//phone number without "+" prefix
startActivity(sendIntent);
Dabei wird zuerst nach dem angegebenen Kontakt gesucht und anschließend ein Chat-Fenster geöffnet. Wenn WhatsApp nicht installiert ist, kann try-catch block damit umgehen.
String digits = "\\d+";
Sring mob_num = 987654321;
if (mob_num.matches(digits))
{
try {
/linking for whatsapp
Uri uri = Uri.parse("whatsapp://send?phone=+91" + mob_num);
Intent i = new Intent(Intent.ACTION_VIEW, uri);
startActivity(i);
}
catch (ActivityNotFoundException e){
e.printStackTrace();
Toast.makeText(this, "WhatsApp not installed.", Toast.LENGTH_SHORT).show();
}
}
Dies ist der kürzeste Weg
String mPhoneNumber = "+972505555555";
mPhoneNumber = mPhoneNumber.replaceAll("+", "").replaceAll(" ", "").replaceAll("-","");
String mMessage = "Hello world";
String mSendToWhatsApp = "https://wa.me/" + mPhoneNumber + "?text="+mMessage;
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse(
mSendToWhatsApp
)));
WhatsApp neue Funktion ist angekommen versuchen Sie diese
Intent sendIntent = new Intent("Android.intent.action.MAIN");
sendIntent.setAction(Intent.ACTION_VIEW);
sendIntent.setPackage("com.whatsapp");
String url = "https://api.whatsapp.com/send?phone=" + "Phone with international format" + "&text=" + "your message";
sendIntent.setData(Uri.parse(url));
if(sendIntent.resolveActivity(context.getPackageManager()) != null){
startActivity(sendIntent);
}
Die für Aktivität hinzugefügte Code-Überprüfung ist verfügbar oder nicht.
Bitmap bmp = null;
bmp = ((BitmapDrawable) tmpimg.getDrawable()).getBitmap();
Uri bmpUri = null;
try {
File file = new File(getBaseContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES), "share_image_" + System.currentTimeMillis() + ".jpg");
FileOutputStream out = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
out.close();
bmpUri = Uri.fromFile(file);
} catch (IOException e) {
e.printStackTrace();
}
String toNumber = "+919999999999";
toNumber = toNumber.replace("+", "").replace(" ", "");
Intent shareIntent =new Intent("Android.intent.action.MAIN");
shareIntent.setAction(Intent.ACTION_SEND);
String ExtraText;
ExtraText = "Share Text";
shareIntent.putExtra(Intent.EXTRA_TEXT, ExtraText);
shareIntent.putExtra(Intent.EXTRA_STREAM, bmpUri);
shareIntent.setType("image/jpg");
shareIntent.setPackage("com.whatsapp");
shareIntent.putExtra("jid", toNumber + "@s.whatsapp.net");
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
try {
startActivity(shareIntent);
} catch (Android.content.ActivityNotFoundException ex) {
Toast.makeText(getBaseContext(), "Sharing tools have not been installed.", Toast.LENGTH_SHORT).show();
}
}
private void openWhatsApp() {
//without '+'
try {
Intent sendIntent = new Intent("Android.intent.action.MAIN");
//sendIntent.setComponent(new ComponentName("com.whatsapp", "com.whatsapp.Conversation"));
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra("jid",whatsappId);
sendIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
sendIntent.setPackage("com.whatsapp");
startActivity(sendIntent);
} catch(Exception e) {
Toast.makeText(this, "Error/n" + e.toString(), Toast.LENGTH_SHORT).show();
Log.e("Error",e+"") ; }
}
versuchen Sie das, arbeitete für mich! . Verwenden Sie einfach Vorsatz
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(whatsappUrl()));
startActivity(intent);
WhatsApp-URL erstellen. fügen Sie die Landeskennzahl in WhatsApp-Telefonnummer hinzu https://countrycode.org/
public static String whatsappUrl(){
final String BASE_URL = "https://api.whatsapp.com/";
final String WHATSAPP_PHONE_NUMBER = "628123232323"; //'62' is country code for Indonesia
final String PARAM_PHONE_NUMBER = "phone";
final String PARAM_TEXT = "text";
final String TEXT_VALUE = "Hello, How are you ?";
String newUrl = BASE_URL + "send";
Uri builtUri = Uri.parse(newUrl).buildUpon()
.appendQueryParameter(PARAM_PHONE_NUMBER, WHATSAPP_PHONE_NUMBER)
.appendQueryParameter(PARAM_TEXT, TEXT_VALUE)
.build();
return buildUrl(builtUri).toString();
}
public static URL buildUrl(Uri myUri){
URL finalUrl = null;
try {
finalUrl = new URL(myUri.toString());
} catch (MalformedURLException e) {
e.printStackTrace();
}
return finalUrl;
}
Überprüfen Sie diese Antwort. Hier beginnt Ihre Nummer mit "91 **********".
Intent sendIntent = new Intent("Android.intent.action.MAIN");
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send."); sendIntent.putExtra("jid",PhoneNumberUtils.stripSeparators("91**********") + "@s.whatsapp.net");
sendIntent.setPackage("com.whatsapp");
startActivity(sendIntent);
Dies sucht zuerst nach dem angegebenen Kontakt und öffnet dann ein Chat-Fenster.
Hinweis: phone_number und str sind Variablen.
Uri mUri = Uri.parse("https://api.whatsapp.com/send?
phone=" + phone_no + "&text=" + str);
Intent mIntent = new Intent("Android.intent.action.VIEW", mUri);
mIntent.setPackage("com.whatsapp");
startActivity(mIntent);
try {
String text = "Hello, Admin sir";// Replace with your message.
String toNumber = "xxxxxxxxxxxx"; // 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));
context.startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=com.whatsapp")));
}
Anstatt sich darauf einzulassen, den Inhalt für die jeweilige App freizugeben.
Der folgende Code ist ein allgemeiner Code, der mit "ShareCompact" eine einfache Lösung bietet, die Android öffnet die Liste der Apps, die das Teilen des Inhalts unterstützen.
Hier teile ich die Daten von MIME-Typ Text/Plain.
String mimeType = "text/plain"
String Message = "Hi How are you doing?"
ShareCompact.IntentBuilder
.from(this)
.setType(mimeType)
.setText(Message)
.startChooser()
public void shareWhatsup(String text) {
String smsNumber = "91+" + "9879098469"; // E164 format without '+' sign
Intent intent = new Intent(Intent.ACTION_VIEW);
try {
String url = "https://api.whatsapp.com/send?phone=" + smsNumber + "&text=" + URLEncoder.encode(text, "UTF-8");
intent.setPackage("com.whatsapp");
intent.setData(Uri.parse(url));
} catch (Exception e) {
e.printStackTrace();
}
// intent.setAction(Intent.ACTION_SEND);
// intent.setType("image/jpeg");
// intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUriArray);
startActivity(intent);
}
private void sendToContactUs() {
String phoneNo="+918000874386";
Intent sendIntent = new Intent("Android.intent.action.MAIN");
sendIntent.setAction(Intent.ACTION_VIEW);
sendIntent.setPackage("com.whatsapp");
String url = "https://api.whatsapp.com/send?phone=" + phoneNo + "&text=" + "Unique Code - "+CommonUtils.getMacAddress();
sendIntent.setDataAndType(Uri.parse(url),"text/plain");
if(sendIntent.resolveActivity(getPackageManager()) != null){
startActivity(sendIntent);
}else{
Toast.makeText(getApplicationContext(),"Please Install Whatsapp Massnger App in your Devices",Toast.LENGTH_LONG).show();
}
}