2012-10-20 21 views
7

Kiedy wysłać SMS za pomocą SmsManager, intencją wynik transmitowane posiada wartość 5Co oznaczają błędy wynikowe SmsManager?

Activity.RESULT_OK 
SmsManager.RESULT_ERROR_GENERIC_FAILURE 
SmsManager.RESULT_ERROR_NO_SERVICE 
SmsManager.RESULT_ERROR_NULL_PDU 
SmsManager.RESULT_ERROR_RADIO_OFF 

Co oznaczało, przez każdego z nich? i wspomnij o przypadku testowym, który może wygenerować każdy z nich. Wiem, że RESULT_OK oznacza pomyślnie wysłany SMS. GENERIC_FAILURE dotyczy ogólnych erros (np. Nie mam kredytu).

Ale aktywowałem tryb samolotowy i próbowałem wysłać SMS-a. Sądziłem, że spowoduje to błąd NO_SERVICE, ale zamiast tego uruchomiono RADIO_OFF. Również oficjalna dokumentacja nie demonstruje ich bardzo dobrze.

Odpowiedz

11

Oto moje komentarze na documentation of SmsManager:

  • RESULT_ERROR_GENERIC_FAILURE: Generic awaria przyczyną

    Coś poszło nie tak i nie ma sposobu, aby powiedzieć, co, dlaczego i jak.

  • RESULT_ERROR_NO_SERVICE: powiodło się, ponieważ usługa jest obecnie niedostępna

    Urządzenie po prostu nie ma recepcji komórek. Prawdopodobnie jesteś w środku pustkowia, gdzieś wewnątrz, pod ziemią lub w kosmosie. Na pewno z dala od wieży telefonii komórkowej.

  • RESULT_ERROR_NULL_PDU: powiodło się, ponieważ nie PDU warunkiem

    Coś poszło nie tak w stosie SMS, robiąc coś z protocol description unit (PDU) (najprawdopodobniej wprowadzenie go razem do transmisji).

  • RESULT_ERROR_RADIO_OFF: powiodło się, ponieważ radiowa została wyraźnie wyłączona

    można włączyć urządzenie w trybie samolotu, który opowiada swoje urządzenie dokładnie "zamieni radio off" (komórka, WiFi, Bluetooth, NFC, .. .).

W końcu większość aplikacje nie potrzebują opieki dlaczego wysyłając SMS nie powiodła się (z wyjątkiem zapyta użytkownika, czy tryb samolot jest w przypadku RESULT_ERROR_RADIO_OFF), ponieważ nie ma nic aplikacja sama może zrobić, aby temu zaradzić .

+0

Dziękuję bardzo :) –

+1

@Philipp R „lub w przestrzeni” ... :) – greaterKing

2

SmsManager.RESULT_ERROR_GENERIC_FAILURE

Najczęściej pojawia się ten błąd, gdy wiadomość zbyt długo za 1 SMS. W takiej sytuacji użyj:

ArrayList<String> texts = smsManager.divideMessage(text); 
smsManager.sendMultipartTextMessage(phone, null, texts, null, null) 
+0

każdym innym przypadku ?? – Fay007

+0

Przykro mi, że coś poszło nie tak i nie ma sposobu, aby powiedzieć co, dlaczego i jak. Przetestuj i wypełnij ... – merovingen