Android回顾之短信

来源:互联网 发布:2016java程序员薪资 编辑:程序博客网 时间:2024/05/21 06:17

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

一、发送短信

发送短信有时是需要的:
private void sendSMS(String msg, String number) {// TODO Auto-generated method stubSmsManager 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方法@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubLog.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" />


0 0
原创粉丝点击