2012-07-19 76 views
2

我想做一個短信android應用程序,但我收到了一個我從未見過的錯誤,即使在谷歌我還沒有找到類似的東西。 所以,如果你能幫助我...我會很高興發送相同的短信兩次

由於某種原因,該程序在同一時間發送兩個消息(相同的短信)。 但它只是在生產中發生。當我使用模擬器時,一切正常!它發送短信只是一次...

我已經嘗試了很多手機和許多電話運營商,但總是發生錯誤。 我真的不知道如何去發現所發生的事情,因爲它只會發生在真正的手機,而不是在模擬器......

代碼如下所示:

private void sendSMS(String phoneNumber, String message, Context context) { 
    ContextWrapper cw = new ContextWrapper(context); 
    Context baseContext = cw.getBaseContext(); 

    Intent intentSMS = new Intent(baseContext, SMSManagerService.class); 
    intentSMS.putExtra("celNumber", phoneNumber); 
    intentSMS.putExtra("textMessage", message); 

    Random s = new Random(System.currentTimeMillis()); 
    PendingIntent pendingIntent = PendingIntent.getService(cw, s.nextInt(), intentSMS, PendingIntent.FLAG_ONE_SHOT); 
    try { 
     pendingIntent.send(); 
    } catch (CanceledException e) { 
    } 
} 

SMSManagerService.class

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Bundle intentExtras = intent.getExtras(); 
    if (intentExtras != null) { 
     String phoneNumber = intentExtras.getString("celNumber"); 
     String message = intentExtras.getString("textMessage"); 

     if (isContentValid(phoneNumber, message)) { 
      sendSMS(phoneNumber, message); 
     } 
    } 

    return super.onStartCommand(intent, flags, startId); 
} 

private void sendSMS(String phoneNumber, String message) { 
    sentPI = registerSMSSent(phoneNumber, message); 
    deliveredPI = registerSMSdelivered(); 

    SmsManager sms = SmsManager.getDefault(); 
    sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); 
} 

so ..任何人...任何提示?!

THX

回答

0

嗨:)嗯,我可能是錯的,但不pendingIntent.send();發送消息?同時,而在調試運行模式,試圖尋找什麼logcat的是說:)也許你會找到答案有;)

+0

THX回答。 不幸的是LogCat沒有記錄任何異常。似乎是正確的。 和...「不是pendingIntent.send();發送消息?」 我不明白你的意思 – Emerick 2012-07-19 22:21:38

+0

沒關係,反正它是錯誤的想法;) – JuozasA 2012-07-20 19:25:23

0

這裏我沒有立即看到有什麼問題。你可以連接你的電腦與你的android手機,在你的代碼的某處放一個換行符並用這種方式進行調試嗎?這樣你可以檢查它是如何進入SMSManagerService.class sendSMS兩次。