android四大组件之BroadcastReceiver短信拦截功能

首先我们要配置一些清单文件

<receiver android:name="com.example.smslinser.MyReceiver" >
            <intent-filter android:priority="1000">
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
            </intent-filter>
        </receiver>

过滤器代表短信过滤

然后还要配置优先级,这个范围是从-1000到1000,我们要做拦截功能必须保证我们写的短信接受者,在系统的短信接受者前接收到

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

package com.example.smslinser;

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

public class MyReceiver extends BroadcastReceiver {
    public MyReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO: This method is called when the BroadcastReceiver is receiving
        // an Intent broadcast.
        Bundle bundle = intent.getExtras();
        //得到接收的短信,这么设计的目的是为了发送很长的时候能够接收
        Object[] object = (Object[]) bundle.get("pdus");
        for (int i = 0; i < object.length; i++) {

            SmsMessage smsMessage = SmsMessage.createFromPdu((byte[])object[i]);
            //得到发信人号码
            String address = smsMessage.getOriginatingAddress();
            //得到信息内容
            String body = smsMessage.getMessageBody();
            if(address.equals("138")){
                //不让其他的广播接收者接收
                abortBroadcast();
            }
            System.out.println("address:"+address+"body:"+body);

        }

    }
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.smslinser"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.smslinser.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android:name="com.example.smslinser.MyReceiver" >
            <intent-filter android:priority="1000">
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
            </intent-filter>
        </receiver>
    </application>

</manifest>
时间: 2024-10-12 22:28:34

android四大组件之BroadcastReceiver短信拦截功能的相关文章

转: 如何在Android 4.4上实现短信拦截

众所周知Android在4.4上增加了不少安全措施,除了把SELinux设置为enforce外,在短信方向也加强了限制. 4.4之后,新增了一个default sms的机制,详细的描述,可以参考我的另一篇文章<谈谈4.4中的新增功能对安全类软件的影响>.简而言之,就是如果要在4.4之后实现短信拦截功能,就必须成为default sms,把所有短信相关的功能都包揽了,然后再做短信拦截.但这种做法,适配性和兼容性的工作是非常巨大的,短信.wapush(多种).彩信.单双卡等等,相当于要求短信拦截类

Android四大组件之BroadcastReceiver详细解析

什么是BroadcastReceiver? BroadcastReceiver作为Android四大组件之一,在实际开发中也发挥着重要的作用,广播机制在Android程序通信中至关重要,广播其实与我们现实生活中的电台很相似,电台在某个频道上发送它的内容,那么只要有在收听这个频道的人都会收到这些内容.在Android中,广播也同样分为两个角色:广播发送者.广播接收者. BroadcastReceiver的应用场景 1.在一个应用中,我们的Activity与Service的通信就需要用到广播来作为中

Android 四大组件 (三) BroadcastReceiver 介绍

一. BroadcastReceiver 使用场景 Broadcast主要是用作消息通信(专业术语叫IPC),Android的IPC基本都是binder来实现,那么这里的BroadcastReceiver其实也是对binder的一个封装,方便上层调用.开发过程中遇到的单进程多线程通信的场景比较多,所以这种情况下使用Broadcast并不是最佳选择,很多人会自己实现一套 Observer 或者使用EventBus等第三方库来完成该功能,不可否认,他们在这种场合下不论是效率还是灵活性方面都更具优势.

Android应用源码安卓短信拦截木马项目源码

温馨提示:本资源由源码天堂整理提供下载转载时请留下链接说明:http://code.662p.com/view/9174.html安卓短信拦截木马源码主要功能就是开机后台启动,拦截本机收到的短信并且转发到指定号码,同时使原短信在手机上不显示,如果不慎安装了这玩意,什么支付宝安全什么财付通安全,只要是有手机短信验证的安全都不叫安全了.木马apk重新签名后手机360免杀,可能手机上的安全360还停留在核对apk的md5或者hash的阶段.也就是所谓的云查杀.但是360会默认提示短信权限.另外我百度了

Android四大组件之BroadcastReceiver

广播接收者  现实中:电台要发布消息,通过广播把消息广播出去,使用收音机,就可以收听广播,得知这条消息 Android中:系统在运行过程中,会产生会多事件,那么某些事件产生时,比如:电量改变.收发短信.拨打电话.屏幕解锁.开机,系统会发送广播,只要应用程序接收到这条广播,就知道系统发生了相应的事件,从而执行相应的代码.使用广播接收者,就可以收听广播 创建广播接收者 1. 定义java类继承BroadcastReceiver 2. 在清单文件中定义receiver节点,定义name属性,指定广播接

Android四大组件之~~BroadcastReceiver

声明:转载请注明出处:http://blog.csdn.net/Hello_Chillax/article/details/45672601 开题:对android稍微有些了解的朋友都知道,android中有四大组件,分别是:Activity,Service,ContentProvider,BroadcastReceiver.今天来介绍其一:BroadcastReceiver. BroadcastReceiver:顾名思义,广播接收者,可以接收系统,其他应用等等发送的广播进而做出相应的反应.比如

Android四大组件应用系列——实现电话拦截和电话录音

一.问题描述 使用BordercastReceiver和Service组件实现下述功能: 1.当手机处于来电状态,启动监听服务,对来电进行监听录音. 2.设置电话黑名单,当来电是黑名单电话,则直接挂断. 当拨打电话或电话状态发生改变时,系统就会发出有序广播,因此我们可以使用BordercastReceiver接受广播,因BordercastReceiver执行时间短不能执行耗时任务也不能使用子线程,因此我们应启动一个Service来监听电话并进行处理 二.加入AIDL文件 Android没有对外

Android 四大组件之 BroadCastReceiver

BroadCastReceiver是一种全局的监听器.用于监听系统全局的广播消息.由于他是一种全局的监听器,所以他可以轻松实现,系统中不同组件之间的通信. 1.创建BroadCastReceiver public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 当监听到广播消息时,执行这个方法. String cont

android四大组件之BroadcastReceiver ip拨号功能

BroadcastReceiver是广播接收者,系统会在产生事件的时候发送一些广播,比如开机,打电话,等等…… 而BroadcastReceiver就可以接收到这些广播从而进行操作. 今天我们要做的就是在拨打号码的时候加上前面的ip号. 首先我们要注册一个BroadcastReceiver,然后我们要在清单文件里配置一些信息首先我们要明确这个BroadcastReceiver 要接收什么样的 广播. <receiver android:name="com.example.ipcall.My