无法使用SmsManager在某些Android手机上发送文本消息

无法使用SmsManager在某些Android手机上发送文本消息,android,sms,Android,Sms,我的手机应用偶尔会发送短信,在大多数手机上一切都很好,但我开始收到一些用户的电子邮件,说这些短信不会发送出去。以下是我正在使用的代码: SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage("+12223334444", null, "test sms", null, null); 我在某个地方读到我应该使用悬挂式帐篷,所以我尝试如下: PendingIntent sentPI = PendingIntent.getBroa

我的手机应用偶尔会发送短信,在大多数手机上一切都很好,但我开始收到一些用户的电子邮件,说这些短信不会发送出去。以下是我正在使用的代码:

SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage("+12223334444", null, "test sms", null, null);
我在某个地方读到我应该使用悬挂式帐篷,所以我尝试如下:

PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, new Intent("SMS_SENT"), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(context, 0, new Intent("SMS_DELIVERED"), 0);                     
SmsManager sm = SmsManager.getDefault();
sm.sendTextMessage(number, null, message, sentPI, deliveredPI);   
到目前为止,我收到了来自三星Galaxy S II、Sprint Evo Shift和三星Sidekick手机用户的电子邮件


请记住,这不是特定于手机的,我已经在其中两部手机(我的朋友)上测试了该应用程序,短信发送正常

这里的问题是你根本没有处理重试。短信息有可能以多种多彩的方式无法发送。您可以使用sent
pendingent
监听这些事件,例如:

public void onReceive(Context context, Intent intent) {
    if (getResultCode() != Activity.RESULT_OK) {
        // failed to send the sms, see SmsManager.ERROR_<description> for more info on why
    }
}
public void onReceive(上下文、意图){
如果(getResultCode()!=活动。结果\u确定){
//发送短信失败,请参阅SmsManager.ERROR\u了解原因的详细信息
}
}

我怀疑正在发生的是,用户在您发送消息时没有信号,因此它会失败并且从不重试。这也解释了为什么它不是特定于设备的。

您可以提供SmsManager的完整软件包名称吗?@Selvin-它来自“android.telephony.smsmsmsmanager”,您是否在manifest.xml@manojchauhan中设置了权限-当然。就像我说的,它在几乎所有的手机上都能工作,但在Galaxy SIIi上却不行。我确信他在写这篇文章时说,它在其他设备上也能工作。。。不管怎样,我刚刚在SGS II上进行了测试(使用标准2.3.6 EU ROM),它正在工作。。。