2015-12-02 6 views
0

Я хочу, чтобы проверить, что SMS было отправлено после того, как:андроид ява смс, как проверить на ошибки

 SmsManager smsManager = SmsManager.getDefault(); 
     smsManager.sendTextMessage(phoneNo, null, smsText, sentPI, null); 

Как я обнаружил, как сейчас единственный способ использовать приемник. Я прав?

Я нашел хороший пример в должности: Unable to send sms using SMSManager in Android Первый ответ показывает, как написать ресивер. Тем не менее, есть комментарии к этому ответу, во-первых, что все получатели регистрируются с каждым SMS (у меня есть), а во-вторых, как это исправить: unregisterReceiver (this); Я пытался использовать unregisterReceiver; Я изменил код в посте выше:

BroadcastReceiver r = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context arg0, Intent arg1) { 
      unregisterReceiver(r); 

.....

registerReceiver(r, new IntentFilter(SENT)); 

Он работает так же, как в примере. Теперь мне нужно добавить unregisterReceiver (r). Я попытался поместить его после smsManager.sendTextMessage - приемник вообще не вызван. Я попытался включить его в onReceive - ему сказали объявить r окончательным. Так и было, теперь «r» может не быть инициированной ошибкой. Где я должен поместить unregisterReceiver, чтобы избавиться от новых и новых приемников?

+1

Быстрое примечание, в котором метод 'onReceive',' unregisterReceiver (r); 'может быть' unregisterReceiver (this); 'и' r' не обязательно будет окончательным. – petey

ответ

0

Он начал нормально работать после изменения кода @petey. Похоже, я положил unregisterReceiver(this); в другое место раньше.

Смежные вопросы