2011-12-05 16 views
6
smsManager.sendMultipartTextMessage(
       mDests[i], mServiceCenter, messages, 
       sentIntents, deliveryIntents); 

在我的SmsReceiver(sentIntents)有时我收到getResultCode() = 0当我发送短信,有时结果代码= 0.那个代码是什么意思?

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

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

这是什么意思和如何解决它? STATUS_ON_ICC_FREE是什么原因?

+0

问得好:\。本网站列出了一个示例:http://hi-android.info/src/com/android/internal/telephony/gsm/SimSmsInterfaceManager.java.html,它捕获返回值。 ICC是您的SIM卡,他们在收到该消息时所做的是从SIM中删除某些内容。也许SIM卡已满? (即使他们提到TS 51.011 10.5.3也没有真正回答任何问题......) – Yuri

回答

3

您只是将结果代码与错误的常量进行比较。 SmsManager.sendMultipartTextMessage的Javadoc明确规定有关由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 

在我看来STATUS_ON_ICC_xxx常数错误添加到公共API,因为它们是由SmsManager类的隐藏方法仅用于: copyMessageToIccdeleteMessageFromIcc

UPDATE

但是这并不能解释为什么你从01收到。由于这两个常数都不等于零(Activity.RESULT_CANCEL = 0,但在javadoc中没有提及它)。 Quick search通过Android来源也不给线索0可能来自。

其中一种可能性是某些其他应用程序可能会捕获显示广播的sentIntent并呼叫setResultCode。不过,我确定到现在为止,Android不可能阻止SMS在应用程序级别发送。

2

javadoc说Free space (TS 51.011 10.5.3/3GPP2 C.S0023 3.4.27).。该3GPP2 specifications3GPP2 C.S0023 3.4.27 status

我不知道短信什么,但是从我的理解,这个“自由空间”是相对于“已用空间”(xx1实际上定义的状态,如001接受&读取; 011 receveid &被读取;等等)

我会说这种地位并不意味着什么......

在Android的代码,我发现只有一个参考STATUS_ON_ICC_FREEdeleteMessageFromIcc()与此更新的消息消息成功时的状态从SIM卡(又名ICC)删除

0

你写你使用以下方法来发送短信:
smsManager.sendTextMessage(destination, null, message, null, null);

你为什么不使用sentIntent参数,可以告诉你,如果你的消息是由网络所接受?

从文档:

sentIntent如果不为null此的PendingIntent当成功发送的消息是广播,还是失败。结果代码将Activity.RESULT_OK成功,或者这些错误之一:

RESULT_ERROR_GENERIC_FAILURE 
RESULT_ERROR_RADIO_OFF 
RESULT_ERROR_NULL_PDU 

sms