android - programar - scheduler for whatsapp
Enviando mensaje a través de WhatsApp (13)
Esto debería funcionar ya sea que Whatsapp esté instalado o no.
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;
}
Como encontré algunas publicaciones más antiguas, que dicen que WhatsApp no es compatible con esto, me preguntaba si algo había cambiado y si hay una forma de abrir una ''conversación'' de whatsapp con un número que estoy enviando con un intento.
¡Probado en Marshmallow S5 y funciona!
Uri uri = Uri.parse("smsto:" + "phone number with country code");
Intent sendIntent = new Intent(Intent.ACTION_SENDTO, uri);
sendIntent.setPackage("com.whatsapp");
startActivity(sendIntent);
Esto abrirá un chat directo con una persona, si no está instalado, esto arrojará una excepción , si el número de teléfono no se conoce, se ofrecerán para enviar invitaciones a través de sms o mensajes de SMS simples.
Actualmente, la única API oficial a la que puede hacer una solicitud GET
:
https://api.whatsapp.com/send?phone=919773207706&text=Hello
De todos modos, hay un programa API secreto que WhatsApp ya está ejecutando
Con este código puedes abrir el chat de whatsapp con el número indicado.
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, ""));
}
El siguiente código es utilizado por la aplicación Google Now y NO funcionará para ninguna otra aplicación.
Escribo esta publicación porque me enoja que WhatsApp no permita que otros desarrolladores envíen mensajes directamente, excepto Google.
Y quiero que otros desarrolladores independientes sepan que está en curso este tipo de cooperación, mientras que Google sigue hablando de "abierto para cualquiera" y WhatsApp dice que no quieren proporcionar ningún acceso a los desarrolladores.
Recientemente, WhatsApp agregó un Intento especialmente para Google Now, que debería verse como sigue:
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", ?????);
También podría descubrir que "search_action_token" es un PendingIntent que contiene un IBinder-Object, que se envía de vuelta a Google App y se marca, si fue creado por Google Now.
De lo contrario, WhatsApp no aceptará el mensaje.
Encontré la siguiente solución, primero necesitarás la id de WhatsApp:
Coincidiendo con los informes de algunos otros hilos aquí y en otros foros, el nombre de inicio de sesión que encontré fue una especie de: código de área internacional sin los 0 o + en el principio + número de teléfono sin los primeros 0 + @ s.whatsapp.net
Por ejemplo, si usted vive en los Países Bajos y tiene el número de teléfono 0612325032 sería [email protected] -> +31 para los Países Bajos sin los 0 o + y el número de teléfono sin el 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);
}
}
Esto me funciona:
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.");
}
Esto me funciona:
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();
}
}
Estoy llegando tarde pero creo que hoy en día tenemos soluciones más cortas y mejores para enviar mensajes a través de WhatsApp.
Puede usar lo siguiente para llamar al selector de sistema, luego elija la aplicación que usará para compartir lo que desee.
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);
Si realmente necesita enviar a través de WhatsApp, todo lo que necesita hacer es lo siguiente (se saltará el selector del sistema)
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);
Si necesita más información, puede encontrarla aquí: Preguntas frecuentes sobre WhatsApp
Intente esto, este código inicie WhatsApp a través de Intent.ACTION_VIEW, no se olvide de usar el código de país en el número de teléfono.
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse(
"https://api.whatsapp.com/send?phone=+628119xxx&text=I''m%20interested%20in%20your%20car%20for%20sale"
)));
Verifique este código,
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)));
}
esto es muy largo pero desagradable. disfruta tu código :)
//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();
}
ACTUALIZACIÓN Consulte https://faq.whatsapp.com/en/android/26000030/?category=5245251
La función Click to Chat de WhatsApp le permite comenzar a chatear con alguien sin tener su número de teléfono guardado en la libreta de direcciones de su teléfono. Siempre que conozca el número de teléfono de esta persona, puede crear un enlace que le permita iniciar un chat con ellos.
Uso: https://api.whatsapp.com/send?phone=15551234567
No utilizar: https://api.whatsapp.com/send?phone=+001-(555)1234567
Ejemplo: https://api.whatsapp.com/send?phone=15551234567&text=I m% 20interested% 20in% 20your% 20car% 20for% 20sale
Respuesta original Aquí está la solución
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();
}
}
También vea http://www.whatsapp.com/faq/en/android/28000012