Próbuję wysyłać wiadomości SMS z aplikacji na Androida. Używam PendingIntent, więc mogę użyć odbiornika Broadcast, aby sprawdzić, czy wysłano go poprawnie. Ponieważ wywołanie sendTextMessage będzie wykonywane za SMS-em, muszę wysłać kilka "dodatkowych" danych, aby zidentyfikować rzeczywisty SMS, tak, że mój program broadcast może wykonać pewną pracę nad określoną wiadomością SMS.Android PendingIntent Extra
Oto mój kod wysyłania:
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);
Problemem jest to, że w moim odbiorniku broadcast, to nie wydaje się czytać moje Extra "foo":
public class SMSSentBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent intent) {
String smsID = intent.getStringExtra("foo");
......
}
}
smsID prostu staje się zerowa .
Mój odbiornik transmisji jest zarejestrowana tak:
baseContext.registerReceiver(new SMSSentBroadcastReceiver(), new IntentFilter("SMS_SENT"));
Biorąc pod uwagę, że filtr zamiarem działa, co robię źle? Dlaczego nie są wysyłane również dodatki?
Każda pomoc jest doceniana. Dzięki
W swoim PendingIntent.getBroadcast, jeśli przekazałeś jakiś unikalny kod żądania, czy smsID nadal ma wartość null? (np. 'PendingIntent.getBroadcast (baseContext, 99, sentIntent, 0)') – dule
Doskonały! To się udało. Jeśli podasz to jako odpowiedź, przyjmuję :) Dlaczego jednak potrzebujesz unikalnego kodu żądania? Wcześniej ustawiałem to na 0, co najwyraźniej nie miało miejsca. – jtnire