android85 短信防火墙

本文涉及的产品
云防火墙,500元 1000GB
简介:
系统收到短信是有广播的,广播中包含了短信的号码和内容
  

###短信防火墙
* 系统发送短信广播时,是怎么把短信内容存入广播的,我们就只能怎么取出来
* 如果短信过长,那么发送时会拆分成多条短信发送,那么短信广播中就会包含多条短信
* 4.0之后,广播接收者所在进程如果从来没启动过,那么广播接收者不会生效
* 4.0之后,如果系统自动关闭广播接收者所在进程,在广播中的action跟该广播接收者的action匹配时,系统会启动该广播接收者所在的进程,但是如果是用户手动关闭该进程,
那么该进程会进入冻结状态,再也不会启动了,直到用户下一次手动启动该进程

###广播的分类
#####无序广播
* 所有与广播中的action匹配的广播接收者都可以收到这条广播,并且是没有先后顺序,视为同时收到
#####有序广播
* 所有与广播中的action匹配的广播接收者都可以收到这条广播,但是是有先后顺序的,按照广播接收者的优先级排序
复制代码
复制代码
package com.itheima.smslanjie;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;

public class SmsReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        //拿到短信的信息
        //短信内容封装在intent中,广播的数据是用Intent传递的
        Bundle bundle = intent.getExtras();
        //以pdus为键,取出一个object数组,数组中的每一个元素都是一条短信
        Object[] objects = (Object[]) bundle.get("pdus");
        //拿到广播中的所有短信
        for (Object object : objects) {
            //通过pdu来构造短信,SmsMessage表示短信对象。
            SmsMessage sms = SmsMessage.createFromPdu((byte[])object);
            if(sms.getOriginatingAddress().equals("138438")){//通过地址拦截
                //阻止其他广播接收者收到这条广播,则短信应用就收不到短信了,短信应用也是通过系统发送的广播收到短信的,
                abortBroadcast();
//                SmsManager.getDefault().sendTextMessage(sms.getOriginatingAddress(), null, "你是个好人", null, null);
                System.out.println(sms.getMessageBody());
                System.out.println(sms.getOriginatingAddress());
            }
//            System.out.println(sms.getMessageBody());
        }
    }
}
/*
 清单文件:
<receiver android:name="com.itheima.smslanjie.SmsReceiver">
<intent-filter android:priority="1000">  防火墙优先级高于短信应用则广播接受者优先于短信应用接受短信广播
    <action android:name="android.provider.Telephony.SMS_RECEIVED"/>  收到Telephony.SMS_RECEIVED这个广播后调用SmsReceiver的方法
</intent-filter>
</receiver>
添加权限
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
*/
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/4947572.html,如需转载请自行联系原作者

目录
打赏
0
0
0
0
49
分享
相关文章
在Linux中,包过滤防火墙与代理应用防火墙有什么区别?有哪些相应的产品?
在Linux中,包过滤防火墙与代理应用防火墙有什么区别?有哪些相应的产品?
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
128 1
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
305 73
Linux防火墙firewall的使用
CentOS 7 中的 firewalld 是基于 Netfilter 的防火墙服务,支持动态配置,无需重启服务即可生效。它通过区域管理网络流量,每个区域可以设置不同的防火墙规则。默认区域为 public,可以通过命令行工具 firewall-cmd 进行管理和配置。firewalld 提供了丰富的预定义服务和区域,方便用户根据需求进行灵活配置。
89 0
入职必会-开发环境搭建39-Linux常用操作-Linux防火墙操作
在CentOS 7中,新引入了firewalld服务(防火墙),取代了CentOS 6之前的iptables服务(防火墙)。
入职必会-开发环境搭建39-Linux常用操作-Linux防火墙操作
linux关闭方防火墙的命令
linux关闭方防火墙的命令
142 2
在Linux中,如何设置防火墙规则?
在Linux中,如何设置防火墙规则?
在Linux中,iptables和firewalld两种防火墙如何使用?
在Linux中,iptables和firewalld两种防火墙如何使用?
在Linux中,如何配置防火墙和安全规则?
在Linux中,如何配置防火墙和安全规则?

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等