广播接收者BroadcastReceiver(捕捉短信的广播信息)

来源:互联网 发布:淘宝自由搭配怎么弄 编辑:程序博客网 时间:2024/05/17 07:11
package cn.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.gsm.SmsMessage;public class SMSReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Object[] pduses = (Object[]) intent.getExtras().get("pdus");// 获取短信for (Object obj : pduses) {byte[] pdusmessage = (byte[]) obj;SmsMessage smsMessage = SmsMessage.createFromPdu(pdusmessage);String phone = smsMessage.getOriginatingAddress();// 发送短信的手机号String content = smsMessage.getMessageBody();// 短信内容Date date = new Date(smsMessage.getTimestampMillis());// 收到短信的时间SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String sendtime = simpleDateFormat.format(date);System.out.println("phone:" + phone + "***" + "content:" + content+ "***" + "sendtime:" + sendtime);}}}

<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="cn.bzu.smslistener"    android:versionCode="1"    android:versionName="1.0">    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />    <application android:label="@string/app_name"        android:icon="@drawable/ic_launcher"        android:theme="@style/AppTheme">        <receiver android:name=".SMSReceiver">            <intent-filter >                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>            </intent-filter>        </receiver>    </application>    <uses-permission android:name="android.permission.RECEIVE_SMS"/></manifest>

当程序在模拟器(5554   android2.2)上运行后,用模拟器(5556 android2.3.3)给5554发短信,程序会输出如图:

但如果反过来,程序在5556上运行,用5554给5556发短信,则无法输出。(分析:可能是版本问题)