8

を使用して SMS を送信すると、SmsManagerブロードキャストされた結果のインテントに 5 の値が保持されます

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

それぞれの意味は何ですか?そして、それぞれを生成できるテスト ケースについて言及してください。RESULT_OK が SMS の送信に成功したことを示していることは知っています。GENERIC_FAILURE は、一般的なエラー (たとえば、信用がない) に対して発生します。

しかし、機内モードを有効にして、SMS を送信しようとしました。NO_SERVICE エラーが発生すると思っていましたが、代わりに RADIO_OFF が発生しました。また、公式ドキュメントはそれらを十分に示していません。

4

3 に答える 3

14

SmsManagerのドキュメントに関する私のコメントは次のとおりです。

  • RESULT_ERROR_GENERIC_FAILURE一般的な故障原因

    何かがうまくいかず、何が、なぜ、どのように起こったのかを知る方法がありません。

  • RESULT_ERROR_NO_SERVICE:サービスが現在利用できないため、失敗しました

    お使いのデバイスにはセル受信機能がありません。あなたはおそらくどこにもいない、屋内、地下、または宇宙のどこかにいるでしょう。確かに、携帯電話の電波塔からは離れています。

  • RESULT_ERROR_NULL_PDU: pdu が提供されていないため、失敗しました

    SMS スタックで、プロトコル記述ユニット (PDU)を使用して何かを行っているときに問題が発生しました(送信用にまとめた可能性が高い)。

  • RESULT_ERROR_RADIO_OFF:無線が明示的にオフになっているため、失敗しました

    デバイスを機内モードに切り替えました。これにより、デバイスは正確に「すべての無線をオフにする」ように指示されます (セル、wifi、Bluetooth、NFC など)。

結局、ほとんどのアプリは、SMS の送信が失敗した理由を気にする必要はありません (ただし、 の場合に機内モードがオンになっているかどうかをユーザーに尋ねる場合を除きますRESULT_ERROR_RADIO_OFF)。

于 2012-10-20T11:51:35.503 に答える
3

SmsManager.RESULT_ERROR_GENERIC_FAILURE

ほとんどの場合、このエラーはメッセージが 1 つの SMS に対して長すぎる場合に発生します。このような状況では、これを使用します。

ArrayList<String> texts = smsManager.divideMessage(text);
smsManager.sendMultipartTextMessage(phone, null, texts, null, null)
于 2015-06-24T09:17:20.667 に答える