Estoy tratando de enviar mensajes SMS desde una aplicación de Android. Estoy usando PendingIntent para poder usar un Broadcast Receiver para verificar si se envió correctamente. Como la llamada a sendTextMessage se realizará por SMS, necesito enviar algunos datos "adicionales" para identificar el SMS real, de modo que mi recepción de difusión pueda hacer algún trabajo en un mensaje de texto específico.Android PendingIntent Extra
Aquí está mi código de envío:
String SENT = "SMS_SENT";
Intent sentIntent = new Intent(SENT);
sentIntent.putExtra("foo", "BAR");
PendingIntent sentPI = PendingIntent.getBroadcast(baseContext, 0,
sentIntent, 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(baseContext, 0,
new Intent(DELIVERED), 0);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(smsMessage.getNumber(), null, smsMessage.getText(), sentPI, deliveredPI);
El problema es que en mi receptor de radiodifusión, que parece que no puede leer mi Adicional "foo":
public class SMSSentBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent intent) {
String smsID = intent.getStringExtra("foo");
......
}
}
SMSID sólo se convierte en nula .
Mi receptor de radiodifusión se ha registrado este modo:
baseContext.registerReceiver(new SMSSentBroadcastReceiver(), new IntentFilter("SMS_SENT"));
Teniendo en cuenta que el filtro intención está trabajando, ¿qué estoy haciendo mal? ¿Por qué no se envían los extras también?
Cualquier ayuda es apreciada. Gracias
En su PendingIntent.getBroadcast, si pasa algún código de solicitud único, ¿el smsID sigue siendo nulo? (por ejemplo, 'PendingIntent.getBroadcast (baseContext, 99, sentIntent, 0)') – dule
¡Excelente! Eso funciono. Si lo pones como respuesta, lo aceptaré :) Sin embargo, ¿por qué necesitas un código de solicitud único? Antes, solo lo estaba poniendo a 0, lo que no parecía funcionar. – jtnire