繁体   English   中英

来自BroadcastReceiver的SmsManager.sendTextMessage在CDMA手机上不起作用

[英]SmsManager.sendTextMessage from a BroadcastReceiver does nothing on CDMA phones

我有一个BroadcastReceiver,它处理android.provider.Telephony.SMS_RECEIVED操作,并在某些情况下发送文本消息作为答复。 我的应用程序具有android.permission.SEND_SMS ,并且在GSM手机上可以正常工作。 但是,它不适用于我目前仅有的唯一CDMA手机,我怀疑它仅出现在CDMA手机上。 它可以在我尝试过的所有GSM手机上运行,​​其中有很多。 logcat既不显示错误也不显示警告,仅显示D/SMSSMSSMSSMS( 260): TeleService: 4098每次调用sendSmsD/SMSSMSSMSSMS( 260): TeleService: 4098 此外,我已经在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一起RESULT_OK

您写道,您使用以下命令发送文本:smsManager.sendTextMessage(destination,null,message,null,null);

为什么不使用sendIntent参数,该参数可以告诉您消息是否被网络接受?

从文档中:

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

也许它可以为您提供一些线索,说明您的SMS发送为何无法按预期工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM