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

在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"权限就行了

 

posted @ 2017-08-24 19:49  starry_sky  阅读(369)  评论(0编辑  收藏  举报