Android PendingIntent Extra

Ich versuche, SMS-Nachrichten von einer Android-App zu senden. Ich benutze PendingIntent, damit ich einen Broadcast Receiver verwenden kann, um zu überprüfen, ob es ok geschickt wurde. Da der sendTextMessage-Aufruf per SMS erfolgt, muss ich einige "extra" -Daten senden, um die aktuelle SMS zu identifizieren, so dass mein Broadcast-Empfang einige Arbeiten an einer bestimmten SMS-Nachricht durchführen kann.

Hier ist mein Sendecode:

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); 

Das Problem ist, dass in meinem BroadCast-Receiver, kann es nicht scheinen, um meine Extra "foo" zu lesen:

  public class SMSSentBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context arg0, Intent intent) { String smsID = intent.getStringExtra("foo"); ...... } } 

SmsID wird gerade null.

Mein Rundfunkempfänger ist wie folgt registriert:

 baseContext.registerReceiver(new SMSSentBroadcastReceiver(), new IntentFilter("SMS_SENT")); 

Angesichts der Tatsache, dass der Absichtsfilter funktioniert, was mache ich falsch? Warum werden auch nicht die Extras geschickt?

Jede Hilfe wird geschätzt. Vielen Dank

  • Ist es möglich, den Service in der Android-Plattform kontinuierlich zu betreiben, auch nach dem Sperren des Gerätes?
  • Android O Ersatz für getRunningServices
  • Laden Sie mehrere Bilder zum Server in einer Warteschlange hoch
  • START_STICKY für IntentService
  • Ist es möglich, Android-Dienste unter Unit-Tests zu verspotten?
  • Setzen Sie einen Zuhörer in eine servicebasierte Klasse
  • Verwenden Sie Service, TimerTask und BroadcastReceiver, um nach verschiedenen Updates zu suchen
  • Der Service wird getötet, während er Wake Lock und nach dem Aufruf von startForeground hält
  • One Solution collect form web for “Android PendingIntent Extra”

    Was ich vermute, ist passiert (zumindest ist es mir passiert), dass du die SMS_SENT-Absicht irgendwo anders nimmst, wobei zu dieser Zeit diese Absicht in den Extras nicht "foo" hat. Das Anrufen von PendingIntent.getBroadcast mit demselben Absichts- und Anforderungscode gibt Ihnen die ursprüngliche anstehende Absicht zurück.

    Wenn es eigentlich die gleiche Absicht ist, müssen Sie etwas wie ein PendingIntent.FLAG_UPDATE_CURRENT verwenden , um die Absicht mit den neuen Extras zu aktualisieren. Wenn es nicht die gleiche Absicht ist, sollte es einen anderen Anforderungscode haben, so dass es nicht mit der anderen Absicht übereinstimmt (weshalb die Einspeisung in einen eindeutigen Anforderungscode funktioniert).

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.