您的位置:首页 > 移动开发 > Android开发

android短信管理器(SmsManager)实例

2013-11-21 16:03 281 查看
需要注册的权限

<uses-permission  android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.SEND_SMS"/>
群发短信

package com.android.xiong.groupsend;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.telephony.SmsManager;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {

	private Button bt1, bt2;
	private EditText ed1, ed2;
	private SmsManager sManger;
	List<String> sendList = new ArrayList<String>();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		bt1 = (Button) findViewById(R.id.bt1);
		bt2 = (Button) findViewById(R.id.bt2);
		ed1 = (EditText) findViewById(R.id.ed1);
		ed2 = (EditText) findViewById(R.id.ed2);
		// 获取SmsManger
		sManger = SmsManager.getDefault();
		bt1.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				for (String send : sendList) {
					// 创建PendIntent对象
					PendingIntent ped = PendingIntent.getActivity(
							MainActivity.this, 0, new Intent(), 0);
					// 发送信息
					sManger.sendTextMessage(send, null, ed2.getText()
							.toString(), ped, null);
				}
				// 提示消息发送完毕
				Toast.makeText(MainActivity.this, "短信群发完", Toast.LENGTH_LONG)
						.show();
			}
		});
		bt2.setOnClickListener(new 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 View getView(int position, View convertView,
							ViewGroup parent) {
						cursor.moveToPosition(position);
						CheckBox rb = new CheckBox(MainActivity.this);
						// 获取联系人的电话号码 并去掉中间的中画、空格
						String number = cursor
								.getString(
										cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))
								.replace("-", "");
						rb.setText(number);
						// 如果该号码已经加入发送人名单,默认勾选该号码
						if (sendList.contains(number)) {
							rb.setChecked(true);
						}
						return rb;
					}

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

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

					@Override
					public int getCount() {
						// TODO Auto-generated method stub
						return cursor.getCount();
					}
				};
				// 加载list.xml布局文件对应的View
				View selectView = getLayoutInflater().inflate(R.layout.item,
						null);
				final ListView listView = (ListView) selectView
						.findViewById(R.id.list1);
				listView.setAdapter(adapter);
				new AlertDialog.Builder(MainActivity.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());
								ed1.append(checkBox.getText().toString()+",");
							}
						}
						
					}
				}).show();
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >
    
    <EditText 
        android:id="@+id/ed1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <EditText 
        android:id="@+id/ed2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
    <Button 
        android:id="@+id/bt2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="获取联系人"/>
    <Button 
        android:id="@+id/bt1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="发送信息"/>

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/list1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: