我想短信群发,我的思路是假如我有5个号码,我把这些号码存到数组里,然后写一个for循环,对每一个号码滴啊用一个发送短信的函数sendSMS。
在这个函数里,我调用短信接口进行发送。同时我想用广播监听器,监听具体的哪一条短信是发送成功了还是发送失败了。是接收成功了还是接收失败了。然后用toast提示哪条短信成功或者失败。发送是正常的,都可以发送出去。但是toast提示的乱七八糟。我在想是不是监听短信发送需要一定的时间,这段时间里面for循环继续运行导致toast出现了问题?
这是我的sendSMS函数:
private void sendSMS(String phone,String message,int j){
final int t=j+1;/*j是数组序号*/
SmsManager smsManager = SmsManager.getDefault();
Intent sentIntent = new Intent(SENT_SMS_ACTION);
Intent deliverIntent = new Intent(DELIVERED_SMS_ACTION);
PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, sentIntent, 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(context, 0, deliverIntent, 0);
/*c拆分,发送*/
List dividecontents = smsManager.divideMessage(message);
for (String text : dividecontents) {
smsManager.sendTextMessage(phone, null, text, sentPI, deliveredPI);
}
context.registerReceiver(new BroadcastReceiver() {
String signs="第"+t+"条";
@Override
public void onReceive(Context context, Intent intent) {
switch (getResultCode()) {
case AppCompatActivity.RESULT_OK:
Toast.makeText(context, signs+"短信发送成功", Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(getBaseContext(),
signs+"SMS generic failure actions",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(getBaseContext(),
signs+"SMS radio off failure actions",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(getBaseContext(),
signs+"SMS null PDU failure actions",
Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
},new IntentFilter(SENT_SMS_ACTION));
context.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String signr="第"+t+"条";
Toast.makeText(context, signr+"收信人已经成功接收", Toast.LENGTH_SHORT).show();
}
}, new IntentFilter(DELIVERED_SMS_ACTION));
}
发送短信结果也有接口吧?
另外,群发短信怎么可能这么快……
后面再用其他机制去看有没有发送成功。