短信群发
2016-06-30 18:20
281 查看
package com.test.smsmanagerdemo; import android.app.AlertDialog; import android.content.DialogInterface; import android.database.Cursor; import android.os.Bundle; import android.provider.ContactsContract; import android.support.v7.app.AppCompatActivity; import android.telephony.SmsManager; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.ListView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; /** * 群发短信 */ public class GroupSendActivity extends AppCompatActivity { EditText groupPhone, groupContent; Button groupSend, select; //把需要发送的号码添加到集合中 ArrayList<String> sendList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_group_send); //获取 SMSManager 管理器 final SmsManager smsManager = SmsManager.getDefault(); //初始化控件 groupPhone = (EditText) findViewById(R.id.et_group_phone); groupContent = (EditText) findViewById(R.id.et_group_content); groupSend = (Button) findViewById(R.id.btn_group_send); select = (Button) findViewById(R.id.select); groupSend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { for (String number : sendList) { // 创建一个 PendingIntent 对象 // PendingIntent pi = PendingIntent.getActivity(GroupSendActivity.this, 0, new Intent(), 0); //String content = groupContent.getText().toString(); String sms_content = groupContent.getText().toString().trim(); String phone_number = groupPhone.getText().toString().trim(); if(phone_number.equals("")) { Toast.makeText(GroupSendActivity.this, "请输入收件人", Toast.LENGTH_LONG).show(); } else { SmsManager smsManager = SmsManager.getDefault(); if (sms_content.length() > 70) { List<String> contents = smsManager.divideMessage(sms_content); for (String sms : contents) { smsManager.sendTextMessage(number, null, sms, null, null); } } else { smsManager.sendTextMessage(number, null, sms_content, null, null); } Toast.makeText(GroupSendActivity.this, "短信发送完成", Toast.LENGTH_SHORT).show(); } } } }); select.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); BaseAdapter adapter = new BaseAdapter() { @Override public int getCount() { return cursor.getCount(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { cursor.moveToPosition(position); CheckBox cb = new CheckBox(GroupSendActivity.this); //获取联系人的电话号码 并去除中间的中划线 空格 String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)) .replace("-", "").replace(" ", ""); cb.setText(number); //如果该号码已经被加入发送人名单默认勾选该号码 if (isChecked(number)) { cb.setChecked(true); } return cb; } }; // 加载list.xml布局文件对应的View View selectView = getLayoutInflater().inflate(R.layout.list, null); final ListView listView = (ListView) selectView.findViewById(R.id.list); listView.setAdapter(adapter); new AlertDialog.Builder(GroupSendActivity.this).setView(selectView).setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //清空 sendList 集合 sendList.clear(); //遍历 listView 组件每个列表 for (int i = 0; i < listView.getCount(); i++) { CheckBox checkBox = (CheckBox) listView.getChildAt(i); //如果该列表项被勾选 if (checkBox.isChecked()){ //就添加该列表项的电话号码 到集合中 sendList.add(checkBox.getText().toString()); } } groupPhone.setText(sendList.toString()); } }).show(); } }); } //判断号码是否已在群发的范围内 private boolean isChecked(String phone) { for (String s : sendList) { if (s.equals(phone)) { return true; } } return false; } }
程序提供了一个带列表的对话框供用户选择群发短信的收件人号码, 使用 ArrayList(String>) 集合保存所有的收件人号码,.为了使用群发功能,使用ArrayList(String>) 集合中的每个号码,并使用SmsManager依次向每个号码发送短信.
相关文章推荐
- 基于JavaScript短信验证码如何实现
- Android接收和发送短信处理
- Android开发中实现发送短信的小程序示例
- 基于JavaScript实现手机短信按钮倒计时(超简单)
- Android短信操作常见协议和常用代码
- 仿iphone中短信以及通话记录的时间显示
- php短信接口代码
- 手机短信轰炸(图)
- SSH框架网上商城项目第26战之订单支付后发送短信提醒
- Android编程之SMS读取短信并保存到SQLite的方法
- Android实现短信加密功能(发送加密短信、解密本地短信)
- Android创建简单发送和接收短信应用
- 浅析Android手机卫士接收短信指令执行相应操作
- Android实现将已发送的短信写入短信数据库的方法
- Android短信发送器实现方法
- Android实现短信发送功能
- Android中简单的电话管理与短信管理App编写实例
- 利用smsmanager实现后台发送短信示例
- Android编程实现读取手机联系人、拨号、发送短信及长按菜单操作方法实例小结