SMSListener實例實現短信接收廣播的功能

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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章