我有一个处理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()
按预期工作,destination
和message
设置正确。我添加了一个Log.d
语句来确认所有这三个。同样,PhoneNumberUtils.isWellFormedSmsAddress(destination)
会返回true
。
编辑:根据@wojci的建议,我添加了sentIntent
并记录了结果代码。结果代码为RESULT_ERROR_GENERIC_FAILURE
,额外errorCode
设置为-1
。但是,当我尝试使用与Activity完全相同的代码时,它可以与RESULT_OK
一起使用。
答案 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
也许它可以为您提供更多线索,说明您的短信发送原因无法正常发挥作用。