Android PendingIntent Extra

Я пытаюсь отправить SMS-сообщения из приложения Android. Я использую PendingIntent, поэтому я могу использовать широковещательный приемник, чтобы проверить, было ли оно отправлено нормально. Поскольку вызов sendTextMessage будет выполнен для каждого SMS-сообщения, мне нужно отправить некоторые «дополнительные» данные для определения фактического SMS-сообщения, так как мой широковещательный прием может выполнить некоторую работу над определенным SMS-сообщением.

Вот мой код отправки:

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

Проблема в том, что в моем приемнике BroadCast он не может читать мой дополнительный «foo»:

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

SmsID просто становится null.

Мой вещательный приемник зарегистрирован так:

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

Учитывая, что фильтр намерений работает, что я делаю неправильно? Почему не отправляются дополнительные услуги?

Любая помощь приветствуется. благодаря

То, что я подозреваю, произошло (по крайней мере, это случилось со мной), заключается в том, что вы используете намерение SMS_SENT где-то в другом месте, в то время как в то время это намерение не имеет «foo» в дополнительных функциях. Вызов PendingIntent.getBroadcast с тем же кодом намерения и запроса вернет вам исходное ожидающее намерение.

Если это на самом деле означает одно и то же намерение, вам нужно использовать что-то вроде PendingIntent.FLAG_UPDATE_CURRENT, чтобы обновить намерение с помощью новых дополнительных функций . Если это не значит, что это одно и то же намерение, у него должен быть другой код запроса, чтобы он не соответствовал другому намерению (именно поэтому работа с уникальным кодом запроса работала).

Intereting Posts
Попытка заставить Android LinearLayout растягиваться горизонтально и вертикально Воспроизведение звука независимо от уровня громкости устройства Шифрование данных на Android Формирование звука через динамик в Android GCM. Как определить, открыто ли приложение, и если это всплывающее окно предупреждения вместо обычного потока уведомлений? Приложение не будет строить на устройствах, не поддерживающих 4.4, после обновления сервисов Google Play Ошибка Eclipse непосредственно после @SuppressWarnings ("unchecked") Столбцы в ListView Android Текст субтитров actionBarSherlockSize При нажатии кнопки DatePicker на моем устройстве (с личным приложением) Приложение Launcher и домашний ключ несовместимы SetBackgroundResource действует отличным от setBackground с помощью RippleDrawable Как проверить, существует ли ключ json? Внутренняя ошибка: класс приемника повторных попыток еще не установлен Загрузка изображения Пикассо