通过广播者实现短信的拦截

Posted starry

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过广播者实现短信的拦截相关的知识,希望对你有一定的参考价值。

android中的四大组件中的广播接收者(BroadcastReceiver):可以用于监听 / 接收 应用发出的广播消息,并做出响应。

所以,通过这个自然而然的可以实现短信的拦截。

先定义一个SmsListenerRecevicer类来继承BroadcastReceiver。在里面实现短信的拦截

 1 package cn.starry.smsListener;
 2 
 3 import android.content.BroadcastReceiver;
 4 import android.content.Context;
 5 import android.content.Intent;
 6 import android.telephony.SmsMessage;
 7 
 8 public class SmsListenerRecevicer extends BroadcastReceiver {
 9 
10     @Override
11     public void onReceive(Context context, Intent intent) {
12         Object[] objects = (Object[]) intent.getExtras().get("pdus");
13         for (Object pdu : objects) {
14             //获取smsmessage实例
15             SmsMessage message = SmsMessage.createFromPdu((byte[]) pdu);
16             //获取发送短信的内容
17             String boby = message.getMessageBody();
18             //获取发送者
19             String address = message.getOriginatingAddress();
20             System.out.println("body:" + boby + ",address:" + address);
21         }
22         
23     }
24 
25 }

 

然后在清单文件里声明该广播接收者。

由于出于安全考虑,在action里的name中不会出现

android.provider.Telephony.SMS_RECEIVED

所以需要自己自己打出来,不过复制粘贴也行。

最后需要添加"RECEIVE_SMS"权限就行了

 

以上是关于通过广播者实现短信的拦截的主要内容,如果未能解决你的问题,请参考以下文章

BroadcastReceiver简介

Android之——拦截短信

java如何实现拦截短信功能

Android 数据库 短信 监听

[android] 手机卫士黑名单功能(短信拦截)

无法在片段内查看接收短信