我有一个 BroadcastReceiver 来处理这个android.provider.Telephony.SMS_RECEIVED
动作,并在某些情况下发送一条短信作为回复。我的应用程序具有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
。