http://mobiforge.com/developing/story/sms-messaging-androidObteniendo múltiples transmisiones desde intenciones?
Utilicé el código de ejemplo en el enlace anterior mi propia aplicación para enviar un SMS, pero me encontré con un problema al verificar el estado de envío de mi mensaje. Lo que sucede es que aparecerá el mensaje de brindis por cada mensaje que he intentado enviar. Entonces, básicamente, digamos que ya envié 3 mensajes. Cuando voy a enviar mi 4º mensaje, el mensaje de pan tostado aparecerá 4 veces. Parece que quizás el BroadcastReceiver está recibiendo la misma transmisión de todos los intentos utilizados hasta ahora. No puedo entender exactamente por qué sucede esto o cómo detenerlo. ¡Cualquier ayuda o idea será muy apreciada!
Aquí es el método específico que causa esto:
//---sends an SMS message to another device---
private void sendSMS(String phoneNumber, String message)
{
String SENT = "SMS_SENT";
String DELIVERED = "SMS_DELIVERED";
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
new Intent(SENT), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
new Intent(DELIVERED), 0);
//---when the SMS has been sent---
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS sent",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(getBaseContext(), "Generic failure",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Toast.makeText(getBaseContext(), "No service",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(getBaseContext(), "Null PDU",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(getBaseContext(), "Radio off",
Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(SENT));
//---when the SMS has been delivered---
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS delivered",
Toast.LENGTH_SHORT).show();
break;
case Activity.RESULT_CANCELED:
Toast.makeText(getBaseContext(), "SMS not delivered",
Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(DELIVERED));
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
}
¿Puede publicar el código mínimo completo necesario para replicar el problema? –
Editaré mi publicación original para incluir el método que causa el problema – John