拦截短信,不让系统发通知
16lz
2021-12-04
首先在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 {@Overridepublic 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进行发短信。这时后,你就可以捕获到别人发来的短信。
更多相关文章
- Android(安卓)Tips: 打电话和发短信
- 如何向Android模拟器打电话发短信
- android调用系统发短信界面功能
- android调用系统发短信界面功能
- 如何向Android模拟器打电话发短信
- 编程回忆之Android回忆(Android(安卓)调用短信服务)
- android 几种发送短信的方法
- Excessive JNI global references - Android
- android发送短信