it-swarm.com.de

Nachricht über WhatsApp senden

Da ich einige ältere Beiträge gefunden habe, die besagen, dass Whatsapp dies nicht unterstützt, habe ich mich gefragt, ob sich etwas geändert hat und ob es einen Weg gibt, einen WhatsApp-Chat mit einer Nummer zu öffnen, die ich durch eine Absicht sende?

87
Diego

UPDATE Siehe https://faq.whatsapp.com/de/Android/26000030/?category=5245251

Mit der Click-to-Chat-Funktion von WhatsApp können Sie einen Chat mit .__ beginnen. jemanden, dessen Telefonnummer nicht auf dem Telefon gespeichert ist Adressbuch. Solange Sie die Telefonnummer dieser Person kennen, können Sie Erstellen Sie einen Link, über den Sie mit ihnen chatten können. 

Verwenden Sie: https://api.whatsapp.com/send?phone=15551234567

Verwenden Sie nicht: https://api.whatsapp.com/send?phone=+001-(555)1234567

Beispiel: https://api.whatsapp.com/send?phone=15551234567&text=I 'm% 20interessierter% 20in% 20your% 20car% 20für% 20sale

Ursprüngliche Antwort Hier ist die Lösung 

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();
   }  

}

Siehe auch http://www.whatsapp.com/faq/de/Android/28000012

156
Manan Sharma

Mit diesem Code können Sie den WhatsApp-Chat mit der angegebenen Nummer öffnen.

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, ""));
}
54
user2957782

Ich habe die folgende Lösung gefunden, zuerst benötigen Sie die WhatsApp-ID:

Übereinstimmend mit Berichten aus anderen Threads hier und in anderen Foren war der Login-Name eine Art: Internationale Vorwahl ohne die 0 oder + am Anfang + Telefonnummer ohne die ersten 0 + @ s.whatsapp.net

Wenn Sie beispielsweise in den Niederlanden wohnen und die Telefonnummer 0612325032 haben, lautet die Nummer [email protected] -> +31 für die Niederlande ohne die 0 oder + und die Telefonnummer ohne die 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);
    }

}
24
Diego

Dies sollte funktionieren, egal ob Whatsapp installiert ist oder nicht.

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.setType("text/plain");
            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;
}
13
Satheesh

Getestet an Marshmallow S5 und es funktioniert!

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

Dadurch wird ein direkter Chat mit einer Person geöffnet. Wenn das, was nicht installiert ist, dies auslöst, wird eine Ausnahme ausgelöst

9
Ilya Gazman

Versuchen Sie es mit diesem Code. Starten Sie WhatsApp über Intent.ACTION_VIEW. Vergessen Sie nicht, die Landesvorwahl für die Telefonnummer zu verwenden.

startActivity(new Intent(Intent.ACTION_VIEW,
                        Uri.parse(
                                "https://api.whatsapp.com/send?phone=+628119xxx&text=I'm%20interested%20in%20your%20car%20for%20sale"
                        )));
5
Latief Anwar

Das funktioniert für mich:

PackageManager pm = context.getPackageManager();
try {
    pm.getPackageInfo("com.whatsapp", PackageManager.GET_ACTIVITIES);
    Intent intent = new Intent();
            intent.setComponent(new ComponentName(packageName,
                    ri.activityInfo.name));
            intent.setType("text/plain");
            intent.putExtra(Intent.EXTRA_TEXT, element);

} catch (NameNotFoundException e) {
    ToastHelper.MakeShortText("Whatsapp have not been installed.");
}
2
Cabezas

Derzeit ist die einzige offizielle API , an die Sie eine GET -Anforderung stellen können

https://api.whatsapp.com/send?phone=919773207706&text=Hello

Jedenfalls gibt es ein secret API-Programm, das bereits von WhatsApp ausgeführt wird

2
student

Der folgende Code wird von Google Now App verwendet und funktioniert NICHT für andere Anwendungen.

Ich schreibe diesen Beitrag, weil es mich ärgert, dass WhatsApp es anderen Entwicklern nicht erlaubt, Nachrichten direkt an Google zu senden.

Und ich möchte, dass andere freiberufliche Entwickler wissen, dass diese Art der Zusammenarbeit im Gange ist, während Google immer wieder von "offen für alle" spricht und WhatsApp sagt, dass sie keinen Zugriff für Entwickler gewähren wollen.

Vor kurzem hat WhatsApp einen Intent speziell für Google Now hinzugefügt, der folgendermaßen aussehen sollte:

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", ?????);

Ich könnte auch herausfinden, dass "search_action_token" ein PendingIntent Ist, das ein IBinder-Objekt enthält, das an Google App zurückgesendet und geprüft wird, ob es von Google Now erstellt wurde.

Andernfalls akzeptiert WhatsApp die Nachricht nicht.

2
black-hawk

das ist sehr langwierig, aber mürrisch.

 //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();

}
1
John smith

Ich bin wirklich spät dran, aber ich glaube, wir haben heutzutage kürzere und bessere Lösungen, um Nachrichten über WhatsApp zu senden.

Sie können die Systemauswahl verwenden, um die Systemauswahl aufzurufen. Wählen Sie anschließend aus, mit welcher App Sie freigeben möchten, was immer Sie möchten.

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);

Wenn Sie wirklich WhatsApp senden müssen, müssen Sie Folgendes tun (Sie werden die Systemauswahl überspringen)

 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);

Wenn Sie weitere Informationen benötigen, können Sie sie hier finden: WhatsApp FAQ

1
Will

Das funktioniert für mich:

public static void shareWhatsApp(Activity appActivity, String texto) {

    Intent sendIntent = new Intent(Intent.ACTION_SEND);     
    sendIntent.setType("text/plain");
    sendIntent.putExtra(Android.content.Intent.EXTRA_TEXT, texto);

    PackageManager pm = appActivity.getApplicationContext().getPackageManager();
    final List<ResolveInfo> matches = pm.queryIntentActivities(sendIntent, 0);
    boolean temWhatsApp = false;
    for (final ResolveInfo info : matches) {
      if (info.activityInfo.packageName.startsWith("com.whatsapp"))  {
          final ComponentName name = new ComponentName(info.activityInfo.applicationInfo.packageName, info.activityInfo.name);
          sendIntent.addCategory(Intent.CATEGORY_LAUNCHER);
          sendIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_TASK);
          sendIntent.setComponent(name);
          temWhatsApp = true;
          break;
      }
    }               

    if(temWhatsApp) {
        //abre whatsapp
        appActivity.startActivity(sendIntent);
    } else {
        //alerta - você deve ter o whatsapp instalado
        Toast.makeText(appActivity, appActivity.getString(R.string.share_whatsapp), Toast.LENGTH_SHORT).show();
    }
}
0
user3124158

holen Sie sich die Kontaktnummer, an die Sie die Nachricht senden möchten, und erstellen Sie einen URI für WhatsApp.

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);
0
Kiran Maniya

Die folgende API kann in C++ verwendet werden, wie in meinem Artikel gezeigt.

Sie müssen mehrere Konstanten definieren:

//
#define    GroupAdmin                <YOUR GROUP ADMIN MOBILE PHONE>
#define GroupName                <YOUR GROUP NAME>
#define CLIENT_ID                <YOUR CLIENT ID>
#define CLIENT_SECRET            <YOUR CLIENT SECRET>

#define GROUP_API_SERVER        L"api.whatsmate.net"
#define GROUP_API_PATH          L"/v3/whatsapp/group/text/message/12"
#define IMAGE_SINGLE_API_URL    L"http://api.whatsmate.net/v3/whatsapp/group/image/message/12"

//

Dann stellen Sie eine Verbindung zum Endpunkt der API her.

hOpenHandle = InternetOpen(_T("HTTP"), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (hOpenHandle == NULL)
{
    return false;
}

hConnectHandle = InternetConnect(hOpenHandle,
    GROUP_API_SERVER,
    INTERNET_DEFAULT_HTTP_PORT,
    NULL, NULL, INTERNET_SERVICE_HTTP,
    0, 1);

if (hConnectHandle == NULL)
{
    InternetCloseHandle(hOpenHandle);
    return false;
}

Senden Sie dann Kopf und Text und warten Sie auf das Ergebnis, das "OK" sein muss.

Schritt 1 - Öffnen Sie eine HTTP-Anfrage:

const wchar_t *AcceptTypes[] = { _T("application/json"),NULL };
HINTERNET hRequest = HttpOpenRequest(hConnectHandle, _T("POST"), GROUP_API_PATH, NULL, NULL, AcceptTypes, 0, 0);

if (hRequest == NULL)
{
    InternetCloseHandle(hConnectHandle);
    InternetCloseHandle(hOpenHandle);
    return false;
}

Schritt 2 - Senden Sie den Header:

std::wstring HeaderData;

HeaderData += _T("X-WM-CLIENT-ID: ");
HeaderData += _T(CLIENT_ID);
HeaderData += _T("\r\nX-WM-CLIENT-SECRET: ");
HeaderData += _T(CLIENT_SECRET);
HeaderData += _T("\r\n");
HttpAddRequestHeaders(hRequest, HeaderData.c_str(), HeaderData.size(), NULL);

Schritt 3 - senden Sie die Nachricht:

std::wstring WJsonData;
WJsonData += _T("{");
WJsonData += _T("\"group_admin\":\"");
WJsonData += groupAdmin;
WJsonData += _T("\",");
WJsonData += _T("\"group_name\":\"");
WJsonData += groupName;
WJsonData += _T("\",");
WJsonData += _T("\"message\":\"");
WJsonData += message;
WJsonData += _T("\"");
WJsonData += _T("}");

const std::string JsonData(WJsonData.begin(), WJsonData.end());

bResults = HttpSendRequest(hRequest, NULL, 0, (LPVOID)(JsonData.c_str()), JsonData.size());

Nun überprüfen Sie einfach das Ergebnis:

TCHAR StatusText[BUFFER_LENGTH] = { 0 };
DWORD StatusTextLen = BUFFER_LENGTH;
HttpQueryInfo(hRequest, HTTP_QUERY_STATUS_TEXT, &StatusText, &StatusTextLen, NULL);
bResults = (StatusTextLen && wcscmp(StatusText, L"OK")==FALSE);
0

verwenden Sie diesen Singleline-Code, um Nachrichten über WhatsApp zu senden

//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
     }
0
milan pithadia

Überprüfen Sie diesen 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)));
}
0
Basim Sherif

Wie die Dokumentation sagt, können Sie einfach eine URL wie:

https://wa.me/15551234567 

Wobei das letzte Segment die Nummer in E164 Format ist

Uri uri = Uri.parse("https://wa.me/15551234567");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
0
GVillani82