SmsManager的结果错误是什么意思?

时间:2012-10-20 11:22:06

标签: android

当我使用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表示成功发送的短信。一般错误发生GENERIC_FAILURE(例如,我没有信用)。

但我已启动飞行模式并尝试发送短信。我认为它会触发NO_SERVICE错误,但是触发了RADIO_OFF。官方文档也没有很好地证明它们。

3 个答案:

答案 0 :(得分:12)

以下是我对documentation of SmsManager

的评论
  • RESULT_ERROR_GENERIC_FAILURE通用失败原因

    出了点问题,没有办法说出什么,为什么或如何。

  • RESULT_ERROR_NO_SERVICE因服务当前不可用而失败

    您的设备根本没有接收信元。你可能处在不知名的地方,在某个地方,地下或太空中。当然远离任何手机塔。

  • RESULT_ERROR_NULL_PDU失败,因为没有提供pdu

    SMS堆栈中出现问题,同时使用protocol description unit (PDU)进行操作(很可能将其放在一起进行传输)。

  • RESULT_ERROR_RADIO_OFF因无线电被明确关闭而失败

    您将设备切换为飞行模式,告诉您的设备“完全关闭所有无线电”(手机,wifi,蓝牙,NFC等)。

最后,大多数应用程序无需关心为什么发送短信失败(除了询问用户是否在RESULT_ERROR_RADIO_OFF的情况下启用飞行模式),因为应用程序本身没有任何内容可以做些补救。

答案 1 :(得分:2)

<强> SmsManager.RESULT_ERROR_GENERIC_FAILURE

大多数情况下,如果短信息太长,则会出现此错误。在这种情况下使用这个:

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

答案 2 :(得分:2)

应该可以更多地了解RESULT_ERROR_GENERIC_FAILURE背后的原因。在收到SMS发送结果的接收器中:

string searchTerm = "myChild.myField";
string searchValue = "C";

Field searchField = new Field(searchTerm);

ISearchResponse<MyParent> result =
    Client.Search<MyParent>(s =>
        s.Query(q => q.Term(searchField, searchValue)));

if (result != null && 
    result.Documents != null && 
    result.Documents.Count != 0)
{
    ...
}

我还没有证明这一点,但是列表提供herehere提供@Override public void onReceive(Context context, Intent intent) { // Other code processing other outcomes if (getResult() == SmsManager.RESULT_ERROR_GENERIC_FAILURE) { int errorCode = intent.getIntExtra("errorCode", -1); if (errorCode != -1) { // process errorCode ... } } // More code ... } 的解释。首字母缩略词here提供了如何理解这些列表的一些解释。例如:

号码问题

  • 1您发送的号码根本不被任何人使用。
  • 28您要发送的号码存在,但没有与之关联的电话。目前尚未分配给SIM卡。
  • 195您发送的号码无效。
  • 196您发送给的号码被禁止(或不清楚)。

其他问题

  • 42网络太忙
  • 38网络出现故障(可能有一段时间)

在我看来,代码之间存在相当多的重叠,但我并不是这些事情的专家。