拦截短信,不让系统发通知
16lz
2021-01-23
首先在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进行发短信。这时后,你就可以捕获到别人发来的短信。
更多相关文章
- Java代码设置Android全屏
- Android Tips: 打电话和发短信
- [置顶] Android 代码混淆 选项说明
- android秒表计时代码
- android代码片段一
- Android Camera子系统代码流程1
- 【Demo实例】Android FTP上传带进度条(优化后代码)
- android全屏设置代码
- Android中一些比较好的开源代码项目