拦截短信,不让系统发通知

首先在AndroidManifest.xml配置文件中加入如下代码:

<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进行发短信。这时后,你就可以捕获到别人发来的短信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值