Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在向ANDROID中的每个号码发送批量短信之前,延迟1分钟_Java_Android_Sms_Bulk - Fatal编程技术网

Java 在向ANDROID中的每个号码发送批量短信之前,延迟1分钟

Java 在向ANDROID中的每个号码发送批量短信之前,延迟1分钟,java,android,sms,bulk,Java,Android,Sms,Bulk,我想用我的android应用程序向100多人发送短信。 这些数字预加载在assets文件夹中的numbers.txt文件中 到目前为止,该应用程序使用下面的for…loop语句发送多达10条短信。 但这就是应用程序停止的地方 我在网上读到,SMS平台通常以延迟模式发送消息,有人建议我在代码中加入1000毫秒的延迟 请帮助我如何在延迟模式下执行for..语句 下面是我的例子 EditText numInput = (EditText) findViewById(R.id.editTextPhone

我想用我的android应用程序向100多人发送短信。 这些数字预加载在assets文件夹中的numbers.txt文件中

到目前为止,该应用程序使用下面的for…loop语句发送多达10条短信。 但这就是应用程序停止的地方

我在网上读到,SMS平台通常以延迟模式发送消息,有人建议我在代码中加入1000毫秒的延迟

请帮助我如何在延迟模式下执行for..语句

下面是我的例子

EditText numInput = (EditText) findViewById(R.id.editTextPhone);
EditText msg = (EditText) findViewById(R.id.editMsg);

public int smsCount;
String phoneNumbers = numInput.getText.toString();
String message = msg.getText.toString();

String[] eachNumber = phoneNumbers.split(";");

smsCount = 0;
for(String num:eachNumber){
    SmsManager smsManager = SmsManager.getDefault();
    smsManager.sendTextMessage(num, null, message, null, null);
    smsCount = smsCount + 1;
    Toast.makeText(getApplicationContext(), smsCount+" SMS Sent!", Toast.LENGTH_LONG).show();
}
phoneNumber变量最多有100个数字。 但是for…循环最多只能运行10次计数,并在那里停止


我想在每封邮件之后添加一个延迟,然后发送所有邮件,而不管收件人的数量。

我已经解决了这个问题。。。 由于找不到任何负责任的帮助,我不得不在sitepoint.com上阅读

但是,我只需要添加

睡眠(3000)

下面是完整的sendMessage()线程

public void onSendClick(视图){
//checkRecipients();
//countSMSChars();
if(message.length()<5){
Toast.makeText(getBaseContext(),“无效的消息格式/长度”,Toast.length_SHORT).show();
Log.d(“消息:”、“+”无效消息格式/长度:“+Message.length()”);
}else if(字符长度>最大长度){
Toast.makeText(getApplicationContext(),“允许的最大字符数为:”+maxLen,Toast.LENGTH_LONG).show();
}else{SENDMESSAGE();}
}
公共无效发送消息(){
sentPI=pendingent.getBroadcast(这个,0,
新意图(已发送),0);
deliveredPI=pendingent.getBroadcast(这个,0,
新意向(已交付),0);
//---当短信已经发送---
registerReceiver(新广播接收器(){
@凌驾
公共void onReceive(上下文arg0,意图arg1){
开关(getResultCode())
{
案例活动。结果\u正常:
Toast.makeText(getBaseContext(),“SMS已发送”,
吐司。长度(短)。show();
打破
案例smsmsmanager.RESULT\u错误\u一般\u失败:
Toast.makeText(getBaseContext(),“一般故障-请检查您的分隔符设置或检查您的帐户余额。”,
Toast.LENGTH_LONG).show();
打破
案例smsmsmanager.RESULT\u错误\u否\u服务:
Toast.makeText(getBaseContext(),“无服务”,
吐司。长度(短)。show();
打破
案例smsmsmanager.RESULT_ERROR_NULL_PDU:
Toast.makeText(getBaseContext(),“空PDU”,
吐司。长度(短)。show();
打破
案例smsmsmanager.RESULT\u ERROR\u RADIO\u OFF:
Toast.makeText(getBaseContext(),“无线电关闭”,
吐司。长度(短)。show();
打破
}
}
},新意向过滤器(已发送));
//---短信发送完毕后---
registerReceiver(新广播接收器(){
@凌驾
公共void onReceive(上下文arg0,意图arg1){
开关(getResultCode())
{
案例活动。结果\u正常:
Toast.makeText(getBaseContext(),“SMS传递”,
Toast.LENGTH_LONG).show();
打破
案例活动.RESULT\u已取消:
Toast.makeText(getBaseContext(),“短信未送达”,
Toast.LENGTH_LONG).show();
打破
}
}
},新IntentFilter(已交付);
试一试{
runSendMessage();
}捕获(例外e){
Log.d(“错误:”、“+e”);
Toast.makeText(getApplicationContext(),e.toString(),Toast.LENGTH_LONG).show();
}
}
public void runSendMessage(){
试一试{
checkDelimiterMode();//检查数组分割分隔符符号
message=input.getText().toString();//获取要发送的消息
numbers=phoneNumbers.getText().toString();//获取收件人的号码
//使用分隔符拆分数字数组
字符串[]eachNumber=numbers.split(delimiterValue);
smsCount=0;SMSAmount=4.00;
for(字符串编号:每个编号){
睡眠(3000);
SmsManager sms=SmsManager.getDefault();
sendTextMessage(num,null,message,sentPI,deliveredPI);
SMSCONT=SMSCONT+1;pb.递增进度((每个编号长度*100)/100);
Toast.makeText(这个,smsCount+“SMS sent@N”+SMSAmount+”=N“+(SMSAmount*smsCount),Toast.LENGTH_LONG).show();
Log.d(“发送的短信数量…”,“+smsCount+”@N“+SMSAmount+”=N“+(SMSAmount*smsComount));
}
}捕获(例外e){
Log.d(“错误:”、“+e”);
Toast.makeText(getApplicationContext(),e.toString(),Toast.LENGTH_LONG).show();
}
}

而这个代码,可以发送超过一百万条短信。。。在3秒钟后发送每条消息。

使用计时器任务。你为什么对我们大喊大叫?
public void onSendClick(View view) {
        //checkRecipients();
        //countSMSChars();
        if(message.length() < 5){
            Toast.makeText(getBaseContext(), "Invalid message format/length.", Toast.LENGTH_SHORT).show();
            Log.d("Message: ",""+"Invalid message format/length: "+message.length());
        }else if(charLength > maxLen ){
            Toast.makeText(getApplicationContext(), "Maximum allowed characters is: "+maxLen, Toast.LENGTH_LONG).show();
        }else{SENDMESSAGE();}
    }
public void SENDMESSAGE(){
        sentPI = PendingIntent.getBroadcast(this, 0,
                new Intent(SENT), 0);

        deliveredPI = PendingIntent.getBroadcast(this, 0,
                new Intent(DELIVERED), 0);

        //---when the SMS has been sent---
        registerReceiver(new BroadcastReceiver(){
            @Override
            public void onReceive(Context arg0, Intent arg1) {
                switch (getResultCode())
                {
                    case Activity.RESULT_OK:
                        Toast.makeText(getBaseContext(), "SMS sent",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                        Toast.makeText(getBaseContext(), "Generic failure - Please check your delimiter settings or check your account balance.",
                                Toast.LENGTH_LONG).show();
                        break;
                    case SmsManager.RESULT_ERROR_NO_SERVICE:
                        Toast.makeText(getBaseContext(), "No service",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case SmsManager.RESULT_ERROR_NULL_PDU:
                        Toast.makeText(getBaseContext(), "Null PDU",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case SmsManager.RESULT_ERROR_RADIO_OFF:
                        Toast.makeText(getBaseContext(), "Radio off",
                                Toast.LENGTH_SHORT).show();
                        break;
                }
            }
        }, new IntentFilter(SENT));

        //---when the SMS has been delivered---
        registerReceiver(new BroadcastReceiver(){
            @Override
            public void onReceive(Context arg0, Intent arg1) {
                switch (getResultCode())
                {
                    case Activity.RESULT_OK:
                        Toast.makeText(getBaseContext(), "SMS delivered",
                                Toast.LENGTH_LONG).show();
                        break;
                    case Activity.RESULT_CANCELED:
                        Toast.makeText(getBaseContext(), "SMS not delivered",
                                Toast.LENGTH_LONG).show();
                        break;
                }
            }
        }, new IntentFilter(DELIVERED));

        try{

            runSendMessage();
        }catch (Exception e){
            Log.d("Error: ", ""+e);
            Toast.makeText(getApplicationContext(),e.toString(), Toast.LENGTH_LONG).show();
        }
    }
    public void runSendMessage(){
        try{
            checkDelimiterMode();//check the array split delimiter symbol
            message = input.getText().toString(); //get the message to be sent
            numbers = phoneNumbers.getText().toString();//get the recipients' numbers
            //split the numbers array using the delimiter
            String[] eachNumber = numbers.split(delimiterValue);
            smsCount = 0; SMSAmount = 4.00;
                for(String num:eachNumber){
                    Thread.sleep(3000);
                    SmsManager sms = SmsManager.getDefault();
                    sms.sendTextMessage(num, null, message, sentPI, deliveredPI);
                    smsCount = smsCount+1; pb.incrementProgressBy((eachNumber.length*100)/100);
                    Toast.makeText(this,smsCount+" SMS sent @ N"+SMSAmount+" = N"+(SMSAmount*smsCount) , Toast.LENGTH_LONG).show();
                    Log.d("Number of SMS sent...",""+smsCount+" @ N"+SMSAmount+" = N"+(SMSAmount*smsCount));
                }
            }catch (Exception e){
            Log.d("Error: ", ""+e);
            Toast.makeText(getApplicationContext(),e.toString(), Toast.LENGTH_LONG).show();
        }
    }