android拦截短信并屏蔽系统的Notification
拦截短信有几个关键点:
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");
- }
- }
android拦截短信并屏蔽系统的Notification的更多相关文章
- 对于android拦截短信的一些疑问
最近折腾android4.4短信拦截的问题,要求在app上收到短信的时候弹出提示,并显示的功能. 然后找到了使用broadcastreceiver和contentprovider两种方法,那么问题来了 ...
- Android获取短信验证码
Android开发中关于短息验证码的设计层出不穷,越来越多的应用为了更好的提高软件的安全性,开始使用通过服务器向用户发送验证码的方式,来保护用户个人信息的安全性.无论是用户注册时的信息验证还是当用户发 ...
- Android接收短信
Android收到短信时会广播android.provider.Telephony.SMS_RECEIVED消息,因此只要定义一个Receiver,收听该消息,就能接收短信. <receiver ...
- android 发送短信的两种方式,以及接收报告和发送报告
android发送短信,以及接收报告和发送报告 android中发送短信其实有两种方式,这个和打电话类似,大家可以了解一下: 一.调起系统发短信功能 ...
- android 发送短信 怎样做到一条一条的发送,仅仅有在上一条发送成功之后才发送下一条短信
android发送短信截获上一条发送是否成功,然后再来发送下一条短信 1.问题:在项目中遇到例如以下要求:待发短信有N条,实现一条一条的发送并在上一条短信发送成功之后再来发送下一条. for(int ...
- android 获取短信验证码倒计时
android 获取短信验证码倒计时 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWVuZ2xlbGUxMzE0/font/5a6L5L2T/fonts ...
- Android之——短信的备份与还原
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47091281 眼下,Android手机中的一些软件能够实现手机短信的备份与还原操作 ...
- 用Tasker实现收到Android手机短信自动转发到邮箱
发送短信到邮箱的原理与 <用Tasker实现收到Android手机短信自动转发到邮箱>有些类似. 发送短信到邮箱是利用Ifttt这个服务将短信转发到邮箱中.Ifttt服务的可扩展性很强, ...
- android之短信拦截器
下面通过短信拦截器来介绍短信中的广播 布局文件 在布局文件中可以设置需要拦截的号码 <?xml version="1.0" encoding="utf-8" ...
随机推荐
- 《Python核心编程》 第七章 映射和集合类型 - 习题
课后习题 7–1. 字典方法.哪个字典方法可以用来把两个字典合并到一起? 答: dict1 = {' :' python' } dict2 = {' :"hello" } dict ...
- KindEditor Asp.net
最近在使用KindEditor,其中遇到三个问题: 1.textarea添加 runat="server" 后整个editor在运行的时候不能显示出来,我没找到原因,于是我就把ru ...
- Tsinsen A1303. tree(伍一鸣) (LCT+处理标记)
[题目链接] http://www.tsinsen.com/A1303 [题意] 给定一棵树,提供树上路径乘/加一个数,加边断边,查询路径和的操作. [思路] LCT+传标 一次dfs构造LCT. L ...
- Hbase Basic Prerequisites
Table 2. Java HBase Version JDK 6 JDK 7 JDK 8 1.0 Not Supported yes Running with JD ...
- [HIve - LanguageManual] Union
Union Syntax select_statement UNION ALL select_statement UNION ALL select_statement ... UNION is use ...
- 一站式Hadoop&Spark云计算分布式大数据和Android&HTML5移动互联网解决方案课程(Hadoop、Spark、Android、HTML5)V2的第一门课程
Hadoop是云计算的事实标准软件框架,是云计算理念.机制和商业化的具体实现,是整个云计算技术学习中公认的核心和最具有价值内容. 如何从企业级开发实战的角度开始,在实际企业级动手操作中深入浅出并循序渐 ...
- SRM 502 DIV1 500pt(DP)
题目简述 给定比赛时间T和n个题目,你可以在任意时间提交题目,每个题目有一个初始分数maxPoints[i],每个单位时间题目的分数将会减少pointsPerMinute[i],即如果在时间t解决了第 ...
- UVa12657 - Boxes in a Line(数组模拟链表)
题目大意 你有一行盒子,从左到右依次编号为1, 2, 3,…, n.你可以执行四种指令: 1 X Y表示把盒子X移动到盒子Y左边(如果X已经在Y的左边则忽略此指令).2 X Y表示把盒子X移动到盒子Y ...
- 关于MySQL数据类型timestamp的讨论
在项目中用到了timestamp这个类型,该字段本意是用于存储改行记录的创建时间的,实际上这是一个很危险的设置: mysql官方文档上有这么一段话: The TIMESTAMP data type p ...
- Java 编程要点之并发(Concurrency)详解
计算机用户想当然地认为他们的系统在一个时间可以做多件事.他们认为,他们可以工作在一个字处理器,而其他应用程序在下载文件,管理打印队列和音频流.即使是单一的应用程序通常也是被期望在一个时间来做多件事.例 ...