在我的應用程序,我需要發送短信,所以我用下面的代碼SmsManager不斷重試發送短信上的HTC Desire
final String SMS_REQUEST_OK = "SMS_REQUEST_OK";
String m_sms_message = String.format("sample text");
String m_dest_number = "some number";
Intent SMSInfo = new Intent(SMS_REQUEST_OK);
SMSInfo.putExtra("msg", m_sms_message);
SMSInfo.putExtra("num", m_dest_number);
PendingIntent sentPI = PendingIntent.getBroadcast(m_context, 0,
SMSInfo, PendingIntent.FLAG_CANCEL_CURRENT);
m_context.registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode()){
case Activity.RESULT_OK:
Toast.makeText(m_context, String.format(
m_context.getResources().getString(R.string.sms_success),
arg1.getExtras().getString("msg"),
arg1.getExtras().getString("num")),
Toast.LENGTH_LONG).show();
break;
default:
Toast.makeText(m_context, String.format(
m_context.getResources().getString(R.string.sms_error),
arg1.getExtras().getString("msg"),
arg1.getExtras().getString("num")),
Toast.LENGTH_LONG).show();
break;
}
}
}, new IntentFilter(SMS_REQUEST_OK));
SmsManager.getDefault().sendTextMessage(
m_dest_number,
null,
m_sms_message,
sentPI,
null);
我希望它嘗試發送短信一次,然後顯示吐司消息與此操作的結果。如果SMS發送成功,它可以正常工作,但如果不是它會一直重試發送它,判斷很多Toast消息(它發生在HTC Desire(S)上,因此在三星上測試它並不會產生這種行爲 - 帶有錯誤的Toast被顯示一次)。 那麼 - SmsManager
應該如何表現以及如何避免它(以便它只嘗試一次發送短信)?
編輯我忘了提 - 它發生,如果getResultCode()
返回133404,沒有測試它在其他錯誤
EDIT2據this,133404
是HTC特有的錯誤,這意味着暫時失敗和設備將自動重試,直到最終收到正確的結果碼併發送廣播。但是,在合理的時間內沒有收到SmsManager記錄的廣播。所以問題依然存在 - 是否有辦法阻止這種重試嘗試?
有什麼辦法強制和HTC設備不嘗試和重新發送,但只是失敗優雅? – user123321
我沒找到辦法 – Vladimir
你能否提供一份參考資料或鏈接詳細解釋這個問題? –