2012-01-13 75 views
2

我的移动应用程序偶尔会发送短信,在大多数手机上一切正常,但我开始接收来自某些用户的电子邮件,指出邮件不会发送。这里是我使用的代码:无法使用SmsManager在某些Android手机上发送短信

SmsManager sms = SmsManager.getDefault(); 
sms.sendTextMessage("+12223334444", null, "test sms", null, null); 

我读的地方,我应该使用的PendingIntent,所以我试了一下,如下所示:从用户

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手机。

请记住它不是手机的具体,我已经测试了应用上的两个这些手机(我的朋友)和文本邮件正常发送

+0

能否提供SmsManager的完整软件包名称? – Selvin 2012-01-13 15:19:15

+0

@Selvin - 它来自“android.telephony.SmsManager” – 2012-01-13 15:22:55

+0

您是否已经将权限放入了manifest.xml 2012-01-13 15:23:09

回答

2

这里的问题是,你不处理根本没有重试。短信可能无法以各种丰富多彩的方式发送。你可以听使用发送PendingIntent使用类似这些事件:

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 
    } 
} 

我怀疑的情况是,用户必须在发送邮件的时间没有信号,所以它失败,从不重试。这也可以解释为什么它不是设备特定的。

相关问题