android拦截短信并屏蔽系统的Notification

本文详细阐述了如何通过Android的BroadcastReceiver机制拦截并处理短信,包括权限申请、广播接收类编写、优先级设置及短信内容过滤等关键步骤。重点介绍了如何在应用程序中屏蔽特定来源的短信,以及实现这一功能的具体代码实现。

拦截短信有几个关键点:

1.android接收短信时是以广播的方式

2.程序只要在自己的Manifest.xml里加有"接收"SMS的权限

<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>

3.要写个广播接收类

public class smsreceiveandmask extends BroadcastReceiver { private String TAG = "smsreceiveandmask"; @Override public void onReceive(Context context, Intent intent) { }

4.Manifest.xml的receiver标签里要加入intent-filter ,action为

<action android:name="android.provider.Telephony.SMS_RECEIVED" />

5.重要的是要在这个intent-filter上加上priority优先级,以使自己接收到SMS优先于系统或其它软件

<receiver android:name=".smsreceiveandmask" > <intent-filter android:priority="1000"> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>

6.当自己的程序接收到要屏蔽的SMS后,用 this.abortBroadcast();来结束广播的继续发给别的程序,这样系统就不会收到短信广播了,Notification也不会有提示了

// 第三步:取消 if (flags_filter) { this.abortBroadcast(); }

源码如下:

Manifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hwttnet.test.smsreceiveandmask" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="3" /> <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> <application android:icon="@drawable/icon" android:label="@string/app_name"> <receiver android:name=".smsreceiveandmask" > <intent-filter android:priority="1000"> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> </application> </manifest>

BroadcastReceiver类:

package com.hwttnet.test.smsreceiveandmask; import android.app.Activity; 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 smsreceiveandmask extends BroadcastReceiver { private String TAG = "smsreceiveandmask"; @Override public void onReceive(Context context, Intent intent) { Log.v(TAG, ">>>>>>>onReceive start"); // 第一步、获取短信的内容和发件人 StringBuilder body = new StringBuilder();// 短信内容 StringBuilder number = new StringBuilder();// 短信发件人 Bundle bundle = intent.getExtras(); if (bundle != null) { Object[] _pdus = (Object[]) bundle.get("pdus"); SmsMessage[] message = new SmsMessage[_pdus.length]; for (int i = 0; i < _pdus.length; i++) { message[i] = SmsMessage.createFromPdu((byte[]) _pdus[i]); } for (SmsMessage currentMessage : message) { body.append(currentMessage.getDisplayMessageBody()); number.append(currentMessage.getDisplayOriginatingAddress()); } String smsBody = body.toString(); String smsNumber = number.toString(); if (smsNumber.contains("+86")) { smsNumber = smsNumber.substring(3); } // 第二步:确认该短信内容是否满足过滤条件 boolean flags_filter = false; if (smsNumber.equals("10086")) {// 屏蔽10086发来的短信 flags_filter = true; Log.v(TAG, "sms_number.equals(10086)"); } // 第三步:取消 if (flags_filter) { this.abortBroadcast(); } } Log.v(TAG, ">>>>>>>onReceive end"); } }

【直流微电网】径向直流微电网的状态空间建模与线性化:一种耦合DC-DC变换器状态空间平均模型的方法 (Matlab代码实现)内容概要:本文介绍了径向直流微电网的状态空间建模与线性化方法,重点提出了一种基于耦合DC-DC变换器状态空间平均模型的建模策略。该方法通过对系统中多个相互耦合的DC-DC变换器进行统一建模,构建出整个微电网的集中状态空间模型,在此基础上实施线性化处理,便于后续的小信号分析与稳定性研究。文中详细阐述了建模过程中的关键步骤,包括电路拓扑分析、状态变量选取、平均化处理以及雅可比矩阵的推导,最终通过Matlab代码实现模型仿真验证,展示了该方法在动态响应分析控制器设计中的有效性。; 适合人群:具备电力电子、自动控制理论基础,熟悉Matlab/Simulink仿真工具,从事微电网、新能源系统建模与控制研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握直流微电网中多变换器系统的统一建模方法;②理解状态空间平均法在非线性电力电子系统中的应用;③实现系统线性化用于稳定性分析与控制器设计;④通过Matlab代码复现扩展模型,服务于科研仿真与教学实践。; 阅读建议:建议读者结合Matlab代码逐步理解建模流程,重点关注状态变量的选择与平均化处理的数学推导,同时可尝试修改系统参数或拓扑结构以加深对模型通用性适应性的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值