Принудительно приложение ждать, чтобы отправить новое текстовое сообщение - PullRequest
1 голос
/ 14 марта 2012

У меня есть довольно простое приложение, которое я пытаюсь сделать. Я хочу иметь приложение, которое может отправлять несколько текстов одному или нескольким получателям. Я выполнил это, но, похоже, не отправил полное количество текстов.

Я предполагаю, что проблема в том, что тексты отправляются быстро. Я пытаюсь просто заставить программу подождать секунду, но когда я просто набираю "Thread.sleep (1000);" Я получаю сообщение о том, что в Eclipse есть необработанное исключение. Это можно обойти? Мне действительно нужно сделать попытку / поймать эти несколько строк кода? Если мне нужно попробовать / поймать, как лучше написать его для этого приложения?

Кроме того, в качестве примечания я разрешаю настроить время сна в более поздней версии, поэтому имейте это в виду при ответах.

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 ]

2 голосов
/ 14 марта 2012

Вы можете использовать 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 голос
/ 14 марта 2012

Согласно методу javaDoc sleep throws InterruptedException , поэтому в идеале вам нужно либо окружить его блоком try / catch.

Для настройки SleepTime вы всегда можете объявить его в каком-то классе (AppConstants.java), иначе вы всегда можете сохранить его в strings.xml и прочитать его оттуда.

Надеюсь, это поможет.

...