SMSListener实例实现短信接收广播的功能

来源:互联网 发布:ffmpeg vb.net 编辑:程序博客网 时间:2024/05/20 05:28

当另一个虚拟器向安装SMSListener的虚拟器发送短信时,控制台会有如下输出:


首先创建SMSListener类继承BroadcastReceiver,编写代码如下:

package com.bzu.smslistener;import java.text.SimpleDateFormat;import java.util.Date;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.telephony.SmsMessage;public class SMSListener extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Object[] pduses=(Object[]) intent.getExtras().get("pdus");// 获取短信for(Object pdus:pduses){byte[] pudsmessage=(byte[]) pdus;SmsMessage sms=SmsMessage.createFromPdu(pudsmessage);String phone=sms.getOriginatingAddress();// 获取手机号String content=sms.getMessageBody();// 获取短信内容Date date=new Date(sms.getTimestampMillis());// 获取发送时间SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String sendTime=simpleDateFormat.format(date);System.out.println("手机号:"+phone);System.out.println("内容:"+content);System.out.println("发送时间:"+sendTime);}}}
并在AndroidManifest.xml中对receiver进行注册,代码如下:

<receiver android:name=".SMSListener">            <intent-filter>                <action android:name="android.provider.Telephony.SMS_RECEIVED"></action>            </intent-filter>        </receiver>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
    注意:如果不添加<uses-permission android:name="android.permission.RECEIVE_SMS"/>这一句那么运行效果如下:


即控制台什么都不输出。因为并没有进入到SMSListener中进行操作。




原创粉丝点击