Android回顾之短信

在Android开发过程中,少不了对短信行为的操作。

一、发送短信

发送短信有时是需要的:
private void sendSMS(String msg, String number) {
	// TODO Auto-generated method stub
	SmsManager sms=SmsManager.getDefault();
	sms.sendTextMessage(number, null, msg, null, null);//发送信息到指定号码
	Log.i("sendSMS",number+msg);
	Toast.makeText(context, "发送成功", 1).show();
}

当然,发送短信是敏感行为,需要权限:
<uses-permission android:name="android.permission.SEND_SMS" />

二、接收短信

拦截短信需要用到BroadcastReceiver,来接收系统收到短信所发的广播"android.provider.Telephony.SMS_RECEIVED"。
public class SMSReceiver extends BroadcastReceiver {

	private String TAG="AutSMS";
	Handler hd = new Handler();
	//广播消息类型
	public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
	//覆盖onReceive方法
	@Override
	public void onReceive(Context context, Intent intent) 
	{
		// TODO Auto-generated method stub
		Log.i(TAG, "引发接收事件");
		//StringBuilder body=new StringBuilder("");//短信内容
		//StringBuilder sender=new StringBuilder("");//发件人
		//先判断广播消息
		String action = intent.getAction();
		if (SMS_RECEIVED_ACTION.equals(action))
		{
			//获取intent参数
			Bundle bundle=intent.getExtras();
			//判断bundle内容
			if (bundle!=null)
			{
				//取pdus内容,转换为Object[]
				Object[] pdus=(Object[])bundle.get("pdus");
				//解析短信
				SmsMessage[] messages = new SmsMessage[pdus.length];
				for(int i=0;i<messages.length;i++)
				{
					byte[] pdu=(byte[])pdus[i];
					messages[i]=SmsMessage.createFromPdu(pdu);
				}    
				//解析完内容后分析具体参数
				for(SmsMessage msg:messages)
				{
					//获取短信内容
					String content=msg.getMessageBody();
					String sender=msg.getOriginatingAddress();
					Date date = new Date(msg.getTimestampMillis());
					SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
					String sendTime = sdf.format(date);
					//TODO:根据条件判断,然后进一般处理
					Log.i(TAG,"发送者是:"+sender+";发送的内容是:"+content);
		  
				}
				
			}
		}
	}
}

当然,这也是需要权限的:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值