当我发送短信时,有时结果代码= 0.该代码是什么意思?

Tim*_*Tim 6 sms android

smsManager.sendMultipartTextMessage(
                mDests[i], mServiceCenter, messages,
                sentIntents, deliveryIntents);
Run Code Online (Sandbox Code Playgroud)

在我的SmsReceiver(sentIntents)有时我会收到getResultCode() = 0.

根据文档:http://developer.android.com/reference/android/telephony/SmsManager.html

这意味着STATUS_ON_ICC_FREE.但我无法理解它是什么.返回时 - 不发送短信.

这意味着什么以及如何解决它?是什么原因STATUS_ON_ICC_FREE?

Ido*_*lon 3

您只是将结果代码与错误的常量进行比较。Javadoc 清楚地说明了广播中SmsManager.sendMultipartTextMessage返回的可能值:getResultCode()sentIntents

The result code will be Activity.RESULT_OK for success, or one of these errors:
RESULT_ERROR_GENERIC_FAILURE
RESULT_ERROR_RADIO_OFF
RESULT_ERROR_NULL_PDU
Run Code Online (Sandbox Code Playgroud)

在我看来,STATUS_ON_ICC_xxx常量被错误地添加到公共 API 中,因为它们仅由 SmsManager 类的隐藏方法使用:等copyMessageToIcc。deleteMessageFromIcc

更新

但是,这并不能解释为什么您会收到0来自getResultCode(). 因为这两个常量都不等于 0(Activity.RESULT_CANCEL = 0但 javadoc 中没有提及SmsManager)。通过 Android Sources 进行快速搜索也没有给出任何0可能来自的线索。

一种可能性可能是某些其他应用程序捕获sentIntent广播并setResultCode显式调用。然而,到目前为止我确信在 Android 中不可能阻止在应用程序级别发送短信。