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

标签 android sms

smsManager.sendMultipartTextMessage(
                mDests[i], mServiceCenter, messages,
                sentIntents, deliveryIntents);

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

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

这意味着 STATUS_ON_ICC_FREE。但我不明白它是什么。 返回时 - 不发送短信。

这是什么意思,如何解决? STATUS_ON_ICC_FREE 的原因是什么?

最佳答案

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

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

在我看来,STATUS_ON_ICC_xxx 常量被错误地添加到公共(public) API,因为它们仅被 SmsManager 类的隐藏方法使用:copyMessageToIccdeleteMessageFromIcc

更新

但是,这并不能解释为什么您会从 getResultCode() 收到 0。因为这两个常量都不等于零(Activity.RESULT_CANCEL = 0 但在 SmsManager javadoc 中没有提到它)。 Quick search通过 Android Sources 也没有提供任何线索 0 可能来自。

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

关于android - 当我发送短信时,有时结果代码 = 0。该代码是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8382687/

相关文章:

android - 使用新的 Telephony content provider 读取 SMS

android - 将 DocumentSnapshot 数据转换为列表

android - 应用填充后将 View 重置为默认值

android - 为什么BottomSheetBehavior抛出java.lang.IllegalArgumentException : Illegal state argument: 2 when I'm trying to set state to STATE_SETTLING

sms - 有什么办法可以知道另一条消息是在回复什么短信吗?

android - 短信已使用 sendTextMessage 方法发送两次

ios - 如何以编程方式在 iOS 上读取传入的短信

java - 选择不包含主要类型。 eclipse 错误

Android QuickReturn 模式与 RecyclerView

Android:使用 android.provider.Telephony.Sms.Conversations