martes, 22 de abril de 2025

Cómo enviar SMS largos en Android: problema y solución

Hace unas semanas tuve un problema con el envío de SMS en mi aplicación Android llamada OkeyPay, cuya funcionalidad principal es enviar mensajes de texto a los números registrados. El problema surgió cuando los mensajes largos no se enviaban correctamente, especialmente aquellos que superaban los 160 caracteres o contenían tildes o caracteres especiales.


En este artículo te cuento cuál fue la causa y cómo lo solucioné de forma sencilla.

Problema principal: Cuando los SMS pasaban de 160 caracteres o tenían tildes, simplemente no llegaban o se cortaban.

Problema:

Problema real: El siguiente mensaje de Yape no se enviaba completo:

Victor A. Coritan N. te envió un pago por S/ 222. El cód. de seguridad es: 541

Solución:

✅ Después de aplicar la solución, ahora sí se envía todo el mensaje, incluso cuando tiene tildes y pasa los límites normales de SMS.

En esta imagen puedes ver el codigo que funciona para mensajes cortos y mensajes largos.

code kotlin sms

GistCode backup

Codigo:

  • linea 10: El codigo es funcional para enviar mensajes cortos que tu controlas.
  • linea 19: Esto codigo corta primero en partes correctas y con el siguiente metodo lo envia en todos los fragmentos como un solo mensaje grande.

Notas:

  • Longitud máxima de un SMS clásico: 160 caracteres si es solo ASCII.
  • Si usamos caracteres (acentos, emojis, etc), puede ser menos (como 70 caracteres)
Método ¿Divide? ¿Envía múltiples SMS?
sendTextMessage() ❌ No ❌ No
sendMultipartTextMessage() + divideMessage() ✅ Sí ✅ Sí

Conclusión:

Siempre usa `sendMultipartTextMessage()`` si: - El mensaje puede superar 70 o 160 caracteres. - Puede tener tildes, emojis, o caracteres raros.

Si tu has tenido problemas con envio de SMS puedes escribir en los comentarios.

Contenido en video:

No hay comentarios:

Publicar un comentario

Soy Aníbal 🐧💻. ¿Tienes una gran Idea/Proyecto?

¿Tienes un proyecto en mente o necesitas resolver un desafío técnico? Estoy aquí para ayudarte a encontrar la mejor solución. 🚀

Hablemos sobre tu proyecto