¿Qué se entiende por errores de resultado de SmsManager?

Cuando envío un SMS usando SmsManager , la intención de resultado emitida tiene un valor de 5

 Activity.RESULT_OK SmsManager.RESULT_ERROR_GENERIC_FAILURE SmsManager.RESULT_ERROR_NO_SERVICE SmsManager.RESULT_ERROR_NULL_PDU SmsManager.RESULT_ERROR_RADIO_OFF 

¿Qué se entiende por cada uno de ellos? Y por favor mencione un caso de prueba que podría generar cada uno. Sé que RESULT_OK denota un SMS enviado correctamente. GENERIC_FAILURE se produce para errores generales (por ejemplo, no tengo crédito).

Pero he activado el modo Avión y he intentado enviar un SMS. He pensado que podría desencadenar NO_SERVICE error, pero un RADIO_OFF se activó en su lugar. También la documentación oficial no los está demostrando muy bien.

Aquí están mis comentarios sobre la documentación de SmsManager :

  • RESULT_ERROR_GENERIC_FAILURE : RESULT_ERROR_GENERIC_FAILURE genérica de falla

    Algo salió mal y no hay manera de decir qué, por qué o cómo.

  • RESULT_ERROR_NO_SERVICE : Falló porque el servicio no está disponible

    Su dispositivo simplemente no tiene recepción celular. Probablemente estés en medio de la nada, en algún lugar dentro, subterráneo o en el espacio. Ciertamente lejos de cualquier torre de teléfono celular.

  • RESULT_ERROR_NULL_PDU : Se ha RESULT_ERROR_NULL_PDU error porque no se ha proporcionado ningún pdu

    Algo salió mal en la pila de SMS, mientras se hace algo con una unidad de descripción de protocolo (PDU) (lo más probable es que se reúna para la transmisión).

  • RESULT_ERROR_RADIO_OFF : Falló porque la radio estaba desactivada explícitamente

    Cambiaste tu dispositivo al modo avión, lo que le dice a tu dispositivo exactamente "apagar todas las radios" (celda, wifi, Bluetooth, NFC, …).

Al final, la mayoría de las aplicaciones no tienen que preocuparse de por qué el envío de un SMS falló (a menos que pregunte al usuario si el modo de avión está RESULT_ERROR_RADIO_OFF en caso de RESULT_ERROR_RADIO_OFF ), porque no hay nada que la aplicación pueda hacer para remediarlo.

SmsManager.RESULT_ERROR_GENERIC_FAILURE

La mayoría de las veces este error surge cuando el mensaje es demasiado largo para 1 SMS. En tal situación use esto:

 ArrayList<String> texts = smsManager.divideMessage(text); smsManager.sendMultipartTextMessage(phone, null, texts, null, null) 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.