todos seleccionar saber por mis mensajes mensaje mas los lista limite enviar ejemplos difusión difusion contactos como android whatsapp

android - seleccionar - lista de difusion whatsapp limite



Enviar mensaje de Whatsapp a contacto específico. (8)

Seguí este link y este es mi código.

Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("content://com.android.contacts/data/" + "[email protected]")); 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 un mensaje de texto a un contacto de Whatsapp en segundo plano (sin elegir el número de contacto, ya conozco el ID)? Root si es necesario


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

Donde id es como es la aplicación uri

[email protected]


Después de googlear un poco, encontré 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(); } }

por lo que puede enviar un intento de enviar un mensaje, pero hasta ahora no puedo enviarlo a un contacto específico


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

El teléfono y el 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!


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

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

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 EXTRA SOBRE EL PROCESO DE ENCONTRAR LA SOLUCIÓN:

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

La intención normal de compartir, usa " 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 de conversación y usa la acción " SEND_TO ", pero usa el cuerpo de sms y no puede tomar imágenes 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>

Cavando 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, al usar un descompilador para la clase ContactPicker y Conversación, se encontró que el valor clave adicional para el número de teléfono era " jid ".


Puedes probar esto, me funciona:

String waUrl = "https://wa.me/918982061674?text=I+can+help+you+with+your+BA+Tuition+requirement.+Please+call+me+at+09080976510+or+check+my+UrbanPro+profile%3A+http%3A%2F%2Flocalhost%3A8080%2Ftesturl"; try { PackageManager packageManager = context.getPackageManager(); Intent i = new Intent(Intent.ACTION_VIEW); String url = waUrl; i.setPackage("com.whatsapp"); i.setData(Uri.parse(url)); if (i.resolveActivity(packageManager) != null) { context.startActivity(i); } } catch (Exception e) { Log.e("WHATSAPP", e.getMessage()) }


Si desea enviar un mensaje a un usuario en particular en segundo plano sin abrir Whatsapp y tiene un dispositivo rooteado, utilice el siguiente código que lo 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(); } }

Solo eche un vistazo a este blog para obtener más información ... He probado que está funcionando correctamente.

http://siddhpuraamit.blogspot.in/


Yo uso este código funciona perfectamente para mí. Y también estoy comprobando si whats-app not install va a Play Store.

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


Intenta seguir:

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