Java: Enviar SMS en Android.

Un par de funciones para enviar mensajes (en algún caso no sólo sms), su funcionalidad es diferente:

El uso de las dos es el mismo:

enviaSMS("000000000","El mensaje");
enviaSMS2("000000000","El mensaje");

Función 1:

public void enviaSMS(String tel, String sms){
   SmsManager smsManager = SmsManager.getDefault();
   smsManager
      .sendTextMessage(tel,null,sms,null,null);
}

Función 2:

public void enviaSMS2(String tel, String sms){
   Uri uri = Uri.parse("smsto:"+tel);
   Intent it = new Intent(Intent.ACTION_SENDTO, uri);
   it.putExtra("sms_body", sms);
   startActivity(it);
}

Explicación:

La primera envía el mensaje sin dejar constancia de ello por ningún lado, no aparecerá en el historial ni nada así. Me parece bastante peligroso y despues de conocer esto tendré más cuidado a la hora de instalar aplicaciones que tengan permisos para SMS.

La segunda es la que creo óptima. Le dice al sistema que se quiere enviar un mensaje a determinado número y el sistema pregunta al usuario a través e de qué aplicación queremos enviarlo, si tenemos Whatsapp por ejemplo, nos dará a elegir entre la aplicación Mensajes del propio sistema o Whatsapp. Si se elige la opción clásica para SMS nos abrirá la aplicación con el número marcado y el mensaje escrito, pero el usuario será quien confirme el envío pulsando el botón Enviar. Teniendo en cuenta que es un servicio con coste, creo que lo aconsejable es hacerlo así. Esto me ha hecho pensar en aplicaciones como Hookt, que envía sms a tus contactos. En su día pensé que lo haría a través de sus servidores pero ahora, conociendo esta opción veo lo peligroso que resulta instalar aplicaciones con según que permisos.

Lo que antes sería un virus que envía emails en nuestro nombre, ahora puede ser una aplicación que el usuario descarga y acepta manualmente.




Josep Viciana

Programador de 27 años con una década de experiencia como programador. interesado en el diseño, ilustración y nuevas tecnologías. Dedicado desde siempre a la programación Web y desde hace algunos años también a la móvil.

3 comentarios

hola! una pregunta hay forma de que el mensaje de texto que se vaya a enviar no necesite de tocar el boton de enviar? sino q agarrando un valor se meta en la funcion 2 y envie el mensaje?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *