AnswerBun.com

Envío SMS no se envía pero informa éxito en la operación

Stack Overflow en español Asked by briast on September 8, 2020

Uso el código siguiente para enviar un SMS. El problema es que la aplicación indica que el mensaje se ha enviado correctamente, pero realmente ni se envía ni aparece en la lista de SMS enviados, y no encuentro donde puede estar el problema.

public void enviar(String numTelefono, String mensaje) {

        if (mensaje.length() > 160) {
            Toast.makeText(context, R.string.sms_limite_max, Toast.LENGTH_LONG).show();
            return;
        }

        if (ActivityCompat.checkSelfPermission(context, Manifest.permission.SEND_SMS) == PackageManager.PERMISSION_GRANTED) {
            try {
                SmsManager smsMgrVar = SmsManager.getDefault();
                smsMgrVar.sendTextMessage(numTelefono, null, mensaje, null, null);
                Toast.makeText(context, R.string.sms_ok,
                        Toast.LENGTH_LONG).show();
            } catch (Exception error) {
                Toast.makeText(context, error.getMessage().toString(),
                        Toast.LENGTH_LONG).show();
                error.printStackTrace();
            }
        } else {
            Toast.makeText(context, R.string.sms_sin_permiso,
                        Toast.LENGTH_LONG).show();
        }

    }

2 Answers

El código que muestras es correcto, pero considera que para lograr enviar mensajes SMS debes cumplir estos puntos:

• El dispositivo desde donde deseas enviar el mensaje debe tener soporte teléfonico.

• Debes definir el permiso SEND_SMS tanto dentro del AndroidManifest.xml como realizar la petición manualmente, puedes ver más información:

Permisos para enviar Mensajes de Texto (enviar SMS)

• Debes usar la clase SmsManager que soporta GSM y CDMA.

• Definir correcamente el número y mensaje.

Ejemplo:

String phone = "1234567890";
String text = "Hola desde Stackoverflow.com";
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phone, null, text , null, null);

Correct answer by Elenasys on September 8, 2020

Probá agregando un PendingIntent

PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,new Intent(SENT), 0);
smsMgrVar.sendTextMessage(numTelefono, null, mensaje, sentPI, null);

Lo que estas haciendo es imprimir el Toast luego del sendTextMessage() por lo que si el llamado no tira un IllegalArgumentException siempre vas a mostrar el mensaje de éxito.

Al usar PendingIntent podés saber si el mensaje se envió correctamente o falló. Por lo que luego de ejecutar el sendTextMessage() podés saber el código resultante y sólo mostrar tu Toast si es igual Activity.RESULT_OK.

La especificación de los distintos mensajes de error las podés encontrar aqui

Answered by andres on September 8, 2020

Add your own answers!

Related Questions

Angular7 Recorrer array de objetos con contador

2  Asked on December 14, 2021 by arilla-arnadillo-luis-ngel

   

¿Como crear UPDATE con php y sql?

1  Asked on December 14, 2021

   

Almacenamiento de archivos en File Server

1  Asked on December 14, 2021 by ariagna-bandala-salazar

   

Ruta absoluta en require

2  Asked on December 14, 2021 by pelukosa

 

Problema básico con bucles en python

1  Asked on December 14, 2021 by sircoffe

   

Dividir array aleatoriamente y escribirlo en tablas

0  Asked on December 14, 2021 by akalele

     

Carrito PHP registra todos los productos mostrados

0  Asked on December 14, 2021 by abdiel-rodriguez

   

como usar dos sensores GP2Y0A21 con arduino

1  Asked on December 14, 2021 by agustin

   

asignar value a FormControl

1  Asked on December 11, 2021 by mserradas

     

¿Como realizar una asignación masiva?

1  Asked on December 11, 2021 by jhon-piraquive

     

marcar todos los checkbox solo se ve la primera vez

2  Asked on December 11, 2021 by reynaldo-cuenca-campos

     

como ejecuto schedule:run de manera local?

1  Asked on December 11, 2021 by hanssel-hurtado

   

Variables entre clases en Flutter

1  Asked on December 11, 2021 by fai-aguirre

   

Simular hint de EditText en TextInputLayout JAVA

2  Asked on December 11, 2021 by bruno-sosa-fast-tag

   

Crear consulta SQL en PHP a partir de checkbox

1  Asked on December 11, 2021 by ivi_trebol

         

Ask a Question

Get help from others!

© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP