Enviar el mensaje Whatsapp a un contacto específico

He seguido este enlace y este es mi código

Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("content://com.android.contacts/data/" + "MYNUMBER@s.whatsapp.net")); i.setPackage("com.whatsapp"); startActivity(i); 

Este es mi registro

 android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=content://com.android.contacts/data/[email protected] pkg=com.whatsapp } at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416) at android.app.Activity.startActivityForResult(Activity.java:3351) at android.app.Activity.startActivityForResult(Activity.java:3312) at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:824) at android.app.Activity.startActivity(Activity.java:3522) at android.app.Activity.startActivity(Activity.java:3490) at com.sieryuu.maidchan.MainActivity.onClick(MainActivity.java:61) at android.view.View.performClick(View.java:4147) at android.view.View$PerformClick.run(View.java:17161) at android.os.Handler.handleCallback(Handler.java:615) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:213) at android.app.ActivityThread.main(ActivityThread.java:4787) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 

Mi pregunta: ¿Cómo enviar el texto a whatsapp contacto en segundo plano (sin elegir el número de contacto, ya sé el ID)? Root si es necesario

Si desea enviar un mensaje a un usuario en particular en el fondo sin necesidad de abrir whatsapp y tiene un dispositivo de raíz a continuación, utilice el siguiente código le ayudará,

  protected void whatsAppSendMessage(String[] paramArrayOfString, String paramString) { try { Shell shell = Shell.startRootShell(); int j = paramArrayOfString.length; for (int i = 0; i < j; i++) { String str3; long l1; long l2; int k; String str1; String str2; Random localRandom = new Random(20L); Log.d("AUTO", "ps | grep -w 'com.whatsapp' | awk '{print $2}' | xargs kill"); commandsTestOnClick("ps | grep -w 'com.whatsapp' | awk '{print $2}' | xargs kill"); str3 = paramArrayOfString[i] + "@s.whatsapp.net"; l1 = System.currentTimeMillis(); l2 = l1 / 1000L; k = localRandom.nextInt(); str1 = "sqlite3 /data/data/com.whatsapp/databases/msgstore.db \"INSERT INTO messages (key_remote_jid, key_from_me, key_id, status, needs_push, data, timestamp, MEDIA_URL, media_mime_type, media_wa_type, MEDIA_SIZE, media_name , latitude, longitude, thumb_image, remote_resource, received_timestamp, send_timestamp, receipt_server_timestamp, receipt_device_timestamp, raw_data, media_hash, recipient_count, media_duration, origin)VALUES ('" + str3 + "', 1,'" + l2 + "-" + k + "', 0,0, '" + paramString + "'," + l1 + ",'','', '0', 0,'', 0.0,0.0,'',''," + l1 + ", -1, -1, -1,0 ,'',0,0,0); \""; str2 = "sqlite3 /data/data/com.whatsapp/databases/msgstore.db \"insert into chat_list (key_remote_jid) select '" + str3 + "' where not exists (select 1 from chat_list where key_remote_jid='" + str3 + "');\""; str3 = "sqlite3 /data/data/com.whatsapp/databases/msgstore.db \"update chat_list set message_table_id = (select max(messages._id) from messages) where chat_list.key_remote_jid='" + str3 + "';\""; Log.d("AUTO", str1); Log.d("AUTO", str2); Log.d("AUTO", str3); shell.add( new SimpleCommand( "chmod 777 /data/data/com.whatsapp/databases/msgstore.db")) .waitForFinish(); shell.add(new SimpleCommand(str1)).waitForFinish(); shell.add(new SimpleCommand(str2)).waitForFinish(); shell.add(new SimpleCommand(str3)).waitForFinish(); } shell.close(); } catch (Exception e) { e.printStackTrace(); } } 

Sólo echa un vistazo a este blog para obtener más información … He probado que está trabajando con éxito

http://siddhpuraamit.blogspot.in/

Después de google un poco, he encontrado el siguiente código

  public void onClickWhatsApp(View view) { Intent waIntent = new Intent(Intent.ACTION_SEND); waIntent.setType("text/plain"); String text = "YOUR TEXT HERE"; waIntent.setPackage("com.whatsapp"); if (waIntent != null) { waIntent.putExtra(Intent.EXTRA_TEXT, text);// startActivity(Intent.createChooser(waIntent, "Share with")); } else { Toast.makeText(this, "WhatsApp not Installed", Toast.LENGTH_SHORT) .show(); } } 

Así que usted puede enviar una intención para enviar un mensaje, pero como lejos es ive leído usted no puede enviarlo a un contacto específico

 private void openWhatsApp(String id) { Cursor c = getSherlockActivity().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(); } 

¿Dónde está la aplicación?

  [email protected] 

Pruebe lo siguiente:

 Intent i = new Intent(Intent.ACTION_VIEW).setData(Uri.parse("content://com.android.contacts/data/" + "[email protected]")); i.setPackage("com.whatsapp"); startActivity(i); 

Intente usar la siguiente solución, para la imagen junto con el texto.

Simplemente cambie setType ("text") y elimine ExtraStream si desea enviar mensajes de texto solamente.

  Intent sendIntent = new Intent("android.intent.action.SEND"); File f=new File("path to the file"); Uri uri = Uri.fromFile(f); sendIntent.setComponent(new ComponentName("com.whatsapp","com.whatsapp.ContactPicker")); sendIntent.setType("image"); sendIntent.putExtra(Intent.EXTRA_STREAM,uri); sendIntent.putExtra("jid", PhoneNumberUtils.stripSeparators("919xxxxxxxxx")+"@s.whatsapp.net"); sendIntent.putExtra(Intent.EXTRA_TEXT,"sample text you want to send along with the image"); startActivity(sendIntent); 

INFORMACIÓN ADICIONAL SOBRE EL PROCESO DE ENCONTRAR LA SOLUCIÓN:

Después de WhatsApp de ingeniería inversa, me encontré con el siguiente fragmento de manifiesto de Android,

Normal Share intención, utiliza " ENVIAR " que no le permite enviar a un contacto específico y requiere un selector de contactos.

El contacto específico es recogido por la clase Conversación y utiliza la acción " SEND_TO ", pero utiliza el cuerpo sms y no puede tomar la imagen y otros archivos adjuntos.

  <activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:name="com.whatsapp.Conversation" android:theme="@style/Theme.App.CondensedActionBar" android:windowSoftInputMode="stateUnchanged"> <intent-filter> <action android:name="android.intent.action.SENDTO"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="sms"/> <data android:scheme="smsto"/> </intent-filter> </activity> 

Excavando más, me encontré con esto,

  <activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:name="com.whatsapp.ContactPicker" android:theme="@style/Theme.App.NoActionBar"> <intent-filter> <action android:name="android.intent.action.PICK"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="com.whatsapp"/> </intent-filter> <intent-filter> <action android:name="android.intent.action.SEND"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="audio/*"/> <data android:mimeType="video/*"/> <data android:mimeType="image/*"/> <data android:mimeType="text/plain"/> <data android:mimeType="text/x-vcard"/> <data android:mimeType="application/pdf"/> <data android:mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document"/> <data android:mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/> <data android:mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation"/> <data android:mimeType="application/msword"/> <data android:mimeType="application/vnd.ms-excel"/> <data android:mimeType="application/vnd.ms-powerpoint"/> </intent-filter> <intent-filter> <action android:name="android.intent.action.SEND_MULTIPLE"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="audio/*"/> <data android:mimeType="video/*"/> <data android:mimeType="image/*"/> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:host="send" android:scheme="whatsapp"/> </intent-filter> <meta-data android:name="android.service.chooser.chooser_target_service" android:value=".ContactChooserTargetService"/> </activity> 

Finalmente, utilizando un descompilador para ContactPicker y la clase de conversación, se encontró que el valor-clave extra para el número de teléfono era " jid ".

He encontrado la manera correcta de hacer esto y es simplemente simple después de leer este artículo: http://howdygeeks.com/send-whatsapp-message-unsaved-number-android/

Teléfono y mensaje son ambos String.

Código fuente:

 try { PackageManager packageManager = context.getPackageManager(); Intent i = new Intent(Intent.ACTION_VIEW); 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(); } 

¡Disfrutar!

Yo uso este código funciona perfectamente para mí. Y también estoy comprobando si whats-app no ​​instalar ir a jugar tienda.

 private void openWhatsApp() { String smsNumber = "8801714884544"; boolean isWhatsappInstalled = whatsappInstalledOrNot("com.whatsapp"); if (isWhatsappInstalled) { try { Intent sendIntent = new Intent("android.intent.action.MAIN"); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.setType("text/plain"); sendIntent.putExtra(Intent.EXTRA_TEXT, FormViews.getTexBoxFieldValue(enquiryEditText)); sendIntent.putExtra("jid", smsNumber + "@s.whatsapp.net"); //phone number without "+" prefix sendIntent.setPackage("com.whatsapp"); startActivity(sendIntent); } catch(Exception e) { Toast.makeText(getActivity(), "Error/n" + e.toString(), Toast.LENGTH_SHORT).show(); } } else { Uri uri = Uri.parse("market://details?id=com.whatsapp"); Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri); Toast.makeText(getActivity(), "WhatsApp not Installed", Toast.LENGTH_SHORT).show(); getActivity().startActivity(goToMarket); } } private boolean whatsappInstalledOrNot(String uri) { PackageManager pm = getActivity().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; } 
  • Mostrando imágenes en miniatura para el enlace en WhatsApp || Og: la meta-etiqueta de la imagen no funciona
  • Transición de elementos compartidos de Android: transformación de un ImageView de un círculo a un rectángulo y viceversa
  • Compartir imagen con whatsapp en android
  • WhatsApp envía un mensaje a un grupo en particular a través de la intención
  • Android Whatsapp Inicio de llamada Receptor de difusión
  • ¿Podemos crear Scroll TextView como el estado de whatsapp lastseen?
  • Ejemplos de Android Whatsapp / Chat
  • ¿Cómo supera WhatsApp el retardo de notificaciones de GCM Push?
  • ¿Cómo puedo abrir la actividad de conversación de WhatsApp usando datos de contacto?
  • ¿Cómo recuperar imágenes de perfil de Whatsapp?
  • Devolución de una imagen a whatsapp
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.