2012-03-14 66 views
1

我有一個非常簡單的應用程序,我試圖做。我想要做的是有一個應用程序可以發送多個文本到1個或更多的收件人。我已經完成了這一步,但似乎並沒有發送全部文本。強制應用程序等待發送一條新的短信

我認爲問題在於文本正在快速發送。我試圖讓程序等一秒鐘,但是當我輸入「Thread.sleep(1000);」時我收到一個錯誤,說Eclipse中有一個未處理的異常。有沒有解決的辦法?我真的需要爲這幾行代碼做一個try/catch嗎?如果我確實需要try/catch,那麼爲這個應用程序編寫它的最佳方式是什麼?

此外,作爲一個說明,我允許在更高版本中定製睡眠時間,因此請記住您的回答。

Integer i = 0; 
while (i < numTextSend) 
{ 
     sms.sendTextMessage(number, null, message, null, null); 
     Thread.sleep(1000); 
      i++; 
} 

[編輯]更新的代碼:

final Button confirm = (Button) findViewById(R.id.confirm); 
confirm.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
     //Grab values from UI 
      String number = String.valueOf(mNumber.getText().toString()); 
      Integer numTextSend = Integer.parseInt(mNumTextSend.getText().toString()); 
      String message = String.valueOf(mMessage.getText().toString()); 

      //Send SMS message(s) 
      SmsManager sms = SmsManager.getDefault(); 
      Integer i = 0; 
      while (i < numTextSend) 
      { 
       sms.sendTextMessage(number, null, message, null, null); 
       //Make App wait 1 second 
       i++; 
      } 
     } 
}); 

回答

2

可以使用postDelayed()處理器在延遲執行任何任務

示例代碼

Handler h = new Handler(); 
    Runnable r = new Runnable() { 

     @Override 
     public void run() { 
      // TODO Auto-generated method stub 
      SmsManager sms = SmsManager.getDefault(); 
      Handler h = new Handler(); 
Runnable r = new Runnable() { 

    @Override 
    public void run() { 
     // TODO Auto-generated method stub 
     SmsManager sms = SmsManager.getDefault(); 
     sms.sendTextMessage(null, null, null, null, 
       null); 
    } 
}; 
h.postDelayed(r, 1000); 

    } 
}; 
+0

感謝您的回覆,我只是不知道如何實現這一點到我的代碼目前。我用更多的代碼更新了我的問題。 – Jim 2012-03-14 18:15:02

+0

'h.postDelayed(r,1000);'應該在那裏兩次? – Jim 2012-03-15 01:34:18

+0

沒有。看看我編輯的答案 – 2012-03-15 06:36:36

1

按照Javadoc中sleep方法拋出InterruptedException,所以你會非常需要可以用try/catch塊圍繞着它。

對於定製睡眠時間你總是可以聲明它在某一類(AppConstants.java),或者能夠始終保持在strings.xml中,並從那裏閱讀。

希望這會有所幫助。

+0

如果我使用一個嘗試捕捉,你覺得是寫的最好的方法它給了我上面的代碼? – Jim 2012-03-14 18:09:56

相關問題