来自BroadcastReceiver的SmsManager.sendTextMessage在CDMA手机上什么都不做

时间:2012-07-30 18:36:48

标签: java android sms cdma

我有一个处理android.provider.Telephony.SMS_RECEIVED操作的BroadcastReceiver,并在某些情况下发送短信作为回复。我的应用程序有android.permission.SEND_SMS,可以在GSM手机上正常使用。但是,它不适用于我目前唯一可用的CDMA手机,我怀疑它只发生在CDMA手机上。它适用于我尝试的所有GSM手机,这些手机不少。 logcat显示没有错误或警告,每次调用D/SMSSMSSMSSMS( 260): TeleService: 4098时只显示sendSms。此外,我在一个Activity中尝试了完全相同的代码,它完全正常。

我正在使用的代码:

private void sendSms(String destination, String message) {
    if(preferencesManager.smsRepliesEnabled()) {
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage(destination, null, message, null, null);
    }
}

preferencesManager.smsRepliesEnabled()按预期工作,destinationmessage设置正确。我添加了一个Log.d语句来确认所有这三个。同样,PhoneNumberUtils.isWellFormedSmsAddress(destination)会返回true

编辑:根据@wojci的建议,我添加了sentIntent并记录了结果代码。结果代码为RESULT_ERROR_GENERIC_FAILURE,额外errorCode设置为-1。但是,当我尝试使用与Activity完全相同的代码时,它可以与RESULT_OK一起使用。

1 个答案:

答案 0 :(得分:1)

您写道,您使用以下内容发送文字:     smsManager.sendTextMessage(destination,null,message,null,null);

为什么不使用sentIntent参数来告诉您网络是否接受了您的信息?

来自文档:

sentIntent  if not NULL this PendingIntent is broadcast when the message is successfully sent, or failed. 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

也许它可以为您提供更多线索,说明您的短信发送原因无法正常发挥作用。