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;
	}
}



时间: 2024-10-22 15:20:01

Android---47---短信群发功能的相关文章

Android注册短信验证码功能

一.短信验证的效果是通过使用聚合数据的SDK实现的 ,效果如下: 二.根据前一段时间的博客中输了怎么注册!注册之后找到个人中心找到申请一个应用即可! 三.根据官方文档创建项目 官方文档API下载地址:http://yunpan.cn/cZwc6mum75yYx 访问密码 9f29 (包含了项目jar的导入操作) 四.调用SDK 第一步:创建并配置工程(具体方法参见工程配置部分的介绍): 第二步:在AndroidManifest中添加开发密钥.所需权限等信息: (1)在application中添加

Android实现短信发送器功能

1.短信界面 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:la

[Android]手机短信验证功能

介绍 短信验证功能大家都很熟悉了.在很多地方都能见到,注册新用户或者短息验证支付等.短信验证利用短信验证码来注册会员,大大降低了非法注册,很大程度上提高了用户账户的安全性. 目前市面上已经有了很多提供短信验证的服务商,有收费的,也有免费的.如果是个人的开发者,用免费的是最划算的了!下面我就介绍一个免费的短信验证平台---Mob.com Mob平台提供的短信验证功能可以实现快速的验证和匹配通讯录好友功能,并且能为每个app每天提供10000条免费短信验证.很多开发者都想在自己的app中集成短信验证

如何实现php手机短信验证功能

http://www.qdexun.cn/jsp/news/shownews.do?method=GetqtnewsdetailAction&id=1677 下载php源代码 现在网站在建设网站时为了保证用户信息的真实性,往往会选择发短信给用户手机发验证码信息,只有通过验证的用户才可以注册,这样保证了用户的联系信息资料的100%的准确性 .今天笔者就跟大家分享一下如何实现php手机短信验证功能,希望对大家有所帮助. 第一.实现php手机短信验证功能的基本思路 1.要找到短信服务提供商,接入短信服

Android之——短信的备份与还原

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47091281 目前,Android手机中的一些软件可以实现手机短信的备份与还原操作.这篇博文就是要向大家介绍如何实现Android短信的备份与还原操作.好了,相信大家对这些实用的功能还是比较感兴趣的,不多说了,我们直接进入主题吧. 一.原理 我的实现原理很简单,界面上放置几个TextView列表,其中两项为"短信的备份"和"短信的还原",点击&quo

Android获取短信验证码

Android开发中关于短息验证码的设计层出不穷,越来越多的应用为了更好的提高软件的安全性,开始使用通过服务器向用户发送验证码的方式,来保护用户个人信息的安全性.无论是用户注册时的信息验证还是当用户发出找回密码请求时的短信验证,他们的工作原理大致上是一致的,因为项目的需要研究了一下关于这方面的知识,本篇我将带领大家一起实现这一当下流行的设计方案. 众所周知,短信验证需要服务器端生成一个验证码,然后发送到用户输入的手机上,这个过程需要服务器主动向客户发送验证短信,所以这是就需要一个移动或联通的发送

[HTML] 微信开发之移动手机WEB页面(HTML5)Javascript实现一键拨号及短信发送功能

在做一个微信的微网站中的一个便民服务电话功能的应用,用到移动web页面中列出的电话号码,点击需要实现调用通讯录,网页一键拨号的拨打电话功能. 如果需要在移动浏览器中实现拨打电话,发送email,美国服务器,调用sns等功能,移动手机WEB页面(HTML5)Javascript提供的接口是一个好办法. 采用url链接的方式,实现在Safari ios,香港服务器,Android 浏览器,webos 浏览器,塞班浏览器,IE,Operamini等主流浏览器,进行拨打电话功能. 1.最常用WEB页面J

[TPYBoard - Micropython] 五分种学会用TPYBoard - GPS 制作短信群发机

转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.什么是TPYBoard-GPS TPYBoard-GPS又称TPYBoard V702,是目前市面上唯一支持通信定位功能的MicroPython开发板:支持Python3.0及以上版本直接运行.支持GPS+北斗双模定位.GPRS通信.短信功能.电话功能:板载温湿度.光敏.三轴加速度传感器.蜂鸣器.LCD5110显示屏.免费提供定位测试服务平台.实物如下图: 二.利用TPYB

android发送短信例子

Android应用开发中我们常常需要发送手机短信.这对于android平台来说,是最简单不过的功能了,无需太多代码,也无需自定义代码,只需要调用android提供的消息管理类SmsManager就可以了. [源码下载]http://www.code4apk.com/android-code/202 核心就是使用SmsManager的sendTextMessage方法加上PendingIntent跳转. 核心代码如下: SmsManager sms=SmsManager.getDefault();