Android---47---短信群发功能

提供一个带列表的对话框供用户选择群发短信的收件人号码,程序则使用了一个ArrayList<String>集合来保存所有的收件人的号码
为了实现群发功能,程序循环遍历ArrayList中的号码,依次向每个号码发送短信即可。



public class MainActivity extends Activity {

	EditText numbers, content;
	Button select, send;
	SmsManager smsManager;
	// 记录列表
	ArrayList<String> sendlist = new ArrayList<String>();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		smsManager = SmsManager.getDefault();
		numbers = (EditText) findViewById(R.id.numbers);
		content = (EditText) findViewById(R.id.content);
		select = (Button) findViewById(R.id.select);
		send = (Button) findViewById(R.id.send);

		send.setOnClickListener(new OnClickListener() {

			@SuppressWarnings("deprecation")
			@Override
			public void onClick(View v) {
				// 一个一个去发送短信
				for (String number : sendlist) {
					PendingIntent pi = PendingIntent.getActivity(
							MainActivity.this, 0, new Intent(), 0);
					smsManager.sendTextMessage(number, null, content.getText()
							.toString(), pi, null);
				}
				Toast.makeText(MainActivity.this, "短信群发完成", 8000).show();
			}
		});
		// 选择联系人
		select.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// 查询联系人的电话号码
				// ContentResolver.query(Uri uri, String[] projection, String
				// selection, String[] selectionArgs, String sortOrder)
				final Cursor cursor = getContentResolver().query(
						ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
						null, null, null, null);

				BaseAdapter adapter = new BaseAdapter() {

					@Override
					public int getCount() {
						// TODO Auto-generated method stub
						return cursor.getCount();
					}

					@Override
					public Object getItem(int position) {
						// TODO Auto-generated method stub
						return position;
					}

					@Override
					public long getItemId(int position) {
						// TODO Auto-generated method stub
						return position;
					}

					@Override
					public View getView(int position, View convertView,
							ViewGroup parent) {
						cursor.moveToPosition(position);
						CheckBox rb = new CheckBox(MainActivity.this);
						// 获取联系人的电话号码,并去掉中间的中划线、空格
						String number = cursor
								.getString(
										cursor.getColumnIndex(CommonDataKinds.Phone.NUMBER))
								.replace("-", "").replace(" ", "");
						rb.setText(number);
						if (isChecked(number)) {
							rb.setChecked(true);
						}
						return rb;
					}
				};
				// 加载list.xml布局文件对应的view界面
				View selectView = getLayoutInflater().inflate(R.layout.list,
						null);
				// 获取selectView中名为list的ListView组件
				final ListView listView = (ListView) selectView
						.findViewById(R.id.list);
				listView.setAdapter(adapter);
				new AlertDialog.Builder(MainActivity.this)
						.setView(selectView)
						.setPositiveButton("确定",
								new DialogInterface.OnClickListener() {

									@Override
									public void onClick(DialogInterface dialog,
											int which) {
										// 清空
										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());
											}
										}
										numbers.setText(sendlist.toString());
									}
								}).show();
			}
		});
	}

	// 判断某个号码是否已在群发范围内
	public boolean isChecked(String phone) {
		for (String s1 : sendlist) {
			if (s1.equals(phone)) {
				return true;
			}
		}
		return false;
	}
}





郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。