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

Android 群发短信

2014-11-24 13:11 309 查看
manifest.xml中加权限

<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.SEND_SMS"/>


main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
	<EditText  
		android:id="@+id/smsBody"
	    android:layout_width="fill_parent" 
	    android:layout_height="wrap_content" 
	    android:text="@string/hello"/>
	<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	    android:orientation="horizontal"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content" >
	    <Button
	    	android:id="@+id/select"
	    	android:layout_width="wrap_content" 
	   	 	android:layout_height="wrap_content"
	   	 	android:text="@string/select"/>   	
	    <Button
	    	android:id="@+id/send"
	    	android:layout_width="wrap_content" 
	   	 	android:layout_height="wrap_content"
	   	 	android:text="@string/send"/>   
    </LinearLayout>	 
	<EditText  
		android:id="@+id/people"
	    android:layout_width="fill_parent" 
	    android:layout_height="wrap_content"/> 
</LinearLayout>


MainActivity.java

package com.example;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

import android.app.Activity;
import android.app.PendingIntent;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.PhoneLookup;
import android.telephony.PhoneNumberUtils;
import android.telephony.gsm.SmsManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity implements OnClickListener{
	Button select;//选择联系人按钮
	Button send;//发送
	EditText people;//以及选择的联系人
	HashMap<String, String> peoples = new HashMap<String, String>();//存储着算选择的所有
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);//设置当前显示的用户界面
        select = (Button) this.findViewById(R.id.select);//得到select按钮
        send = (Button) this.findViewById(R.id.send);//得到send按钮
        people = (EditText) this.findViewById(R.id.people);//得到people按钮
        select.setOnClickListener(this);//设置监听
        send.setOnClickListener(this);//设置监听
    }
	@Override
	public void onClick(View v) {//重写的按钮监听方法
		if(v == select){//按下了选择联系人按钮
			Uri uri = Uri.parse("content://contacts/people");
			Intent intent = new Intent(Intent.ACTION_PICK, uri);//创建Intent
			startActivityForResult(intent, 1);//切换到通讯录
		}
		else if(v == send){//按下发送按钮
			v.setEnabled(false);//设置按钮为不可用
    		//获取输入的短信内容
    		EditText etSms=(EditText)findViewById(R.id.smsBody);//得到EditText控件的引用
    		String smsStr=etSms.getText().toString();//得到短信的文本
		    Set keySet = peoples.keySet();//得到键值集合
		    Iterator ii = keySet.iterator();
		    people.setText("");//置空
		    while(ii.hasNext()){//循环
		    	Object key = ii.next();//得到键值
		    	String tempName = (String)key;//姓名
		    	String tempPhone = peoples.get(key);//得到电话号码
	    		//判断号码字符串是否合法
	    		if(PhoneNumberUtils.isGlobalPhoneNumber(tempPhone)){//合法则发送短信
	        		 sendSMS(tempPhone,smsStr,v);//发送短信 
	    		}
		    }
		}
	}
    private void sendSMS(String telNo,String smsStr,View v){//自己开发的直接发送短信的方法
    	PendingIntent pi=
    		PendingIntent.getActivity(this, 0, new Intent(this,Sample_11_3.class), 0);
    	SmsManager sms=SmsManager.getDefault();
    	sms.sendTextMessage(telNo, null, smsStr, pi, null);//发送短信
    	v.setEnabled(true);//短信发送完成后恢复发送按钮的可用状态
    }	
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if(requestCode == 1){//requestCode码与发送时相同时
			Uri myUri = data.getData();
			if(myUri != null){//当不为空时
				try{
					//得到ContentResolver对象  
				    ContentResolver cr = getContentResolver(); 
				    Cursor c = managedQuery(myUri, null, null, null, null);
				    c.moveToFirst();
				    // 取得联系人名字  
				    int nameFieldColumnIndex = c.getColumnIndex(PhoneLookup.DISPLAY_NAME);  
				    String sName = c.getString(nameFieldColumnIndex); //得到姓名
				    //取得联系人ID  
				    String contactId = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));  
				    Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "  
				            + contactId, null, null);  
				    // 取得电话号码(当存在多个号码,只取一个)
				    String strPhoneNumber = ""; 
				    if(phone.moveToNext()){//得到一个电话号码
				    	strPhoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));  
				    }
				    peoples.put(sName, strPhoneNumber);//存放到容器中
				    Set keySet = peoples.keySet();//键值集合
				    Iterator ii = keySet.iterator();
				    people.setText("");//置空
				    while(ii.hasNext()){
				    	Object key = ii.next();//得到键值
				    	String tempName = (String)key;//姓名
				    	String tempPhone = peoples.get(key);//得到电话号码
				    	people.setText(people.getText() + tempName + ":" + tempPhone+"\n");
				    }
				}catch(Exception e){//捕获异常
					e.printStackTrace();//打印异常信息
				}
			}
		}
		super.onActivityResult(requestCode, resultCode, data);
	}	
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: