-2

我有一个打电话的方法。数字和延迟来自两个编辑文本框中的字符串。它工作正常。但是,我想把它放在一个循环中,以便它在结束之前多次执行相同的操作。

我的代码是 -

public void makeCall(View view) {

             //create handler for phone call

         Handler delayedCallHandler = new Handler() {
              public void handleMessage(Message msg) {
                String num = (String) msg.obj;

                Intent intent = new Intent(Intent.ACTION_CALL);
                intent.setData(Uri.parse(num));
                startActivity(intent);
              }
            };


            //Grabs milli seconds count from edit text box

               EditText edit_seconds = (EditText)
                    findViewById(R.id.seconds);
               CharSequence edit_seconds_value =
                    edit_seconds.getText();

               int secondz = Integer.parseInt(edit_seconds_value.toString());                    

            // Grabs TXT Char from MSISDN edit text box and converts to edit_text_value
            EditText edit_text = (EditText)
                    findViewById(R.id.msisdn);
               CharSequence edit_text_value =
                    edit_text.getText();

            //Delay phone call

            delayedCallHandler.sendMessageDelayed(
                    delayedCallHandler.obtainMessage(0, "tel:" + edit_text_value), // msg.obj = the number to call
                    secondz); // 50 seconds

            // Toast Popup when call set button pressed

            Toast toast=Toast.makeText(this, "You have now set the call for " + edit_seconds_value + "milliseconds" , Toast.LENGTH_LONG); 
            toast.show();  

    }        
4

3 回答 3

0

非常简单,您可以使用ThreadClass、TimerTaskClass 或AlarmManagerClass。在 Thread 和 TimerTask 类中需要睡眠时间。

于 2012-05-19T08:45:53.700 回答
0

您可以使用 启动 CALL 活动startactivityForResult()。然后在OnActivtyResult发送延迟消息开始下一个CALL。

@Override
void onActivityResult(...) {
   ....
   if (count <= NUMBER_OF_CALLS) {
       delayedCallHandler.sendMessageDelayed(
                    delayedCallHandler.obtainMessage(0, "tel:" + edit_text_value), // msg.obj = the number to call
                    secondz); // 50 seconds
       count++;
   }
   ....
}
于 2012-05-19T09:04:25.393 回答
0

简单的。我认为。行。假设您希望它重复 10 次。并且您的方法称为“method()”

//BEFORE YOUR ONCREATE
int count = 1;
//PUT THIS WHEREVER YOU WANT TO CALL YOUR METHOD
while(count<=10){
    method();
    count++;
}

然后在此之后设置您的方法()(在 OnCreate 之外)

private void method() {
    //DO ALL YOUR STUFF HERE

}

简而言之,这将创建名为 method() 的方法。

然后它将创建一个名为 count 的 int,其值为 1。

然后它会按照你的方法加1到“count”

所以“count”现在的值为 2。

由于计数仍低于 10,它将再次执行该方法..

一次又一次……一次又一次,直到 count=10

然后它将停止。

将 method() 重命名为您喜欢的任何内容并添加您想要做的事情。

于 2012-05-20T00:21:37.297 回答