15 ответов:
обновление Пожалуйста, обратитесь к https://faq.whatsapp.com/en/android/26000030/?category=5245251
функция WhatsApp Click to Chat позволяет вам начать чат с помощью кто-то без сохранения их номера телефона в вашем телефоне адресная книга. Пока вы знаете номер телефона этого человека, вы можете создать ссылку, которая позволит вам начать общаться с ними.
использовать: https://api.whatsapp.com/send?phone=15551234567
Не использовать: https://api.whatsapp.com/send?phone=+001-(555)1234567
пример: https://api.whatsapp.com/send?phone=15551234567&text=I'm%20interested%20in%20your%20car%20for%20sale
оригинальный ответ Вот решение
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(); } }
С помощью этого кода Вы можете открыть чат whatsapp с заданным номером.
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, "")); }
Я нашел следующее решение, сначала вам понадобится идентификатор whatsapp:
сопоставление с отчетами из некоторых других потоков здесь и на других форумах имя Входа, которое я нашел, было своего рода: международный код города без 0 или + в начале + номер телефона без первого 0 + @s.whatsapp.net
например, если вы живете в Нидерландах и имеете номер телефона 0612325032, это будет [email protected] - > + 31 для Нидерландов без 0 или + и номер телефона без 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); } }
Это должно работать, установлен ли Whatsapp или нет.
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; }
проверено на Зефир S5 и это работает!
Uri uri = Uri.parse("smsto:" + "phone number with country code"); Intent sendIntent = new Intent(Intent.ACTION_SENDTO, uri); sendIntent.setPackage("com.whatsapp"); startActivity(sendIntent);откроется прямые чат с человеком, если whatsup не установлен это будет исключения, если номер телефона не известен whatsup, они предложат отправить приглашение через sms или простое sms-сообщение
попробуйте это, этот код запуска WhatsApp через намерение.ACTION_VIEW, не забудьте использовать код страны для телефонного номера.
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse( "https://api.whatsapp.com/send?phone=+628119xxx&text=I'm%20interested%20in%20your%20car%20for%20sale" )));
это работает для меня:
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."); }
следующий код используется приложением Google Now и не будет работать для любого другого приложения.
Я пишу этот пост, потому что он заставляет меня сердиться, что WhatsApp не позволяет другим разработчикам отправлять сообщения напрямую, кроме Google.
и я хочу, чтобы другие внештатные разработчики знали, что такое сотрудничество продолжается, в то время как Google продолжает говорить об "открытом для всех", а WhatsApp говорит, что они не хотят предоставлять доступ к разработчики.
недавно WhatsApp добавил намерение специально для Google Now, которое должно выглядеть следующим образом:
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", ?????);Я мог бы также узнать, что" search_action_token " является PendingIntent это содержит IBinder-объект, который отправляется обратно в приложение Google и проверяется, был ли он создан Google Now.
в противном случае WhatsApp не примет сообщение.
в настоящее время единственный официальный API что вы можете сделать
GETзапрос:https://api.whatsapp.com/send?phone=919773207706&text=Helloв любом случае, есть секретная программа API уже выполняется WhatsApp
это очень долго, но угрюмо работает. наслаждайтесь вашим кодом:)
//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(); }
Я действительно опаздываю здесь, но я считаю, что в настоящее время у нас есть более короткие и лучшие решения для отправки сообщений через WhatsApp.
вы можете использовать следующее, чтобы вызвать средство выбора системы, а затем выбрать, какое приложение вы будете использовать, чтобы поделиться тем, что вы хотите.
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);Если вам действительно нужно отправить через WhatsApp Все, что вам нужно сделать, это следующее (вы пропустите выбор системы)
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);Если вам нужна дополнительная информация вы можете найти его здесь: WhatsApp FAQ
проверить этот код
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))); }
это работает для меня:
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(); } }
получить контактный номер, который вы хотите отправить сообщение и создать uri для whatsapp, здесь c-курсор, возвращающий выбранный контакт.
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);
Как документация говорит, что вы можете просто использовать URL-адрес как:
https://wa.me/15551234567где последний сегмент-это число в in Формат E164
Uri uri = Uri.parse("https://wa.me/15551234567"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);
Comments