首先在AndroidManifest.xml配置文件中加入如下代码:
然后创建一个继承BroadcastReceiver的类SMSReceiver.java
然后运行程序后,用ddms进行发短信。这时后,你就可以捕获到别人发来的短信。
<receiver android:name=".SMSReceiver">
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
然后创建一个继承BroadcastReceiver的类SMSReceiver.java
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
public class SMSReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("tag", "onReceive");
// 第一步、获取短信的内容和发件人
StringBuilder body = new StringBuilder();// 短信内容
StringBuilder number = new StringBuilder();// 短信发件人
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] myOBJpdus = (Object[]) bundle.get("pdus");
SmsMessage[] message = new SmsMessage[myOBJpdus.length];
for (int i = 0; i < myOBJpdus.length; i++) {
message[i] = SmsMessage.createFromPdu((byte[]) myOBJpdus[i]);
}
for (SmsMessage currentMessage : message) {
body.append(currentMessage.getDisplayMessageBody());
number.append(currentMessage.getDisplayOriginatingAddress());
}
String sms_body = body.toString();
String sms_number = number.toString();
Log.i("sms_body", "sms_body=" + sms_body);
Log.i("sms_number", "sms_number=" + sms_number);
if (sms_number.contains("+86")) {
sms_number = sms_number.substring(3);
}
// 第二步、确认该短信内容是否满足过滤条件
// boolean flags_filter = false;
// for(****){//进行判断,如果满足
// flags_filter=true}
//
// //第三步、取消
// if(flags_filter){
//调用这一句代码后,系统将不处理当前的广播
this.abortBroadcast();
// }
}
}
}
然后运行程序后,用ddms进行发短信。这时后,你就可以捕获到别人发来的短信。