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 {
@Override
public 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发短信,则无法输出。(分析:可能是版本问题)