强制app等待发送新的短信

时间:2012-03-14 07:40:13

标签: java android exception sleep wait

我有一个非常简单的应用程序,我正在尝试。我想要做的是有一个应用程序可以发送多个文本给一个或多个收件人。我已经完成了这个,但它似乎没有发送全部文本。

我认为问题在于文本正在快速发送。我试图让程序等一下,但是当我输入“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 个答案:

答案 0 :(得分: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);

    }
};

答案 1 :(得分:1)

根据javaDoc sleep方法抛出InterruptedException所以你理想情况下需要用try / catch块包围它。

为了自定义SleepTime,您总是可以在某个类(AppConstants.java)中声明它,或者可以始终保留在strings.xml中并从那里读取它。

希望这有帮助。