您的位置:首页 > 其它

短信群发

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依次向每个号码发送短信.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  短信 smsManager