2012-01-13 110 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 
    } 
} 

我懷疑的情況是,用戶必須在發送郵件的時間沒有信號,所以它失敗,從不重試。這也可以解釋爲什麼它不是設備特定的。