當另一個虛擬器向安裝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 {
@Override
public 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中進行操作。