BroadcastReceiver--Android广播机制

什么是广播

生活中的电视频道、收音机、手机、都有自己的特定广播,他们不管是否有人关心、收听等,不管你是否看电视,每个频道都实施按照自己的进步进行播放、收音机也是!所以我理解的android广播机制也就是这样--广播发布者只负责把发生的事件发出,至于是否有接听者或者接听者接收到怎样处理并不关心。

  1. 我们都知道电台发送的内容大都以语音播报为主,而android中我们的BroadcastReceiver相当于一个事件,内容存放到intent中,由它来完成传输工作,至于是否进行处理是由intent-filter里的参数进行匹配筛选找出自己关心的,然后进行操作
  2. 生活中用户通过调整具体的频道、频率来接受电台、电视的信息。android中要接受广播的内容是通过注册一个广播的形式来接受特定的广播,并且只有发送的action和接收广播的action相同,有时候集体到发布的内容,接受者才可以接受到这个广播
  3. android中发布广播通过sendBroadcast这个方法来发送

广播在android中的用途

从上面的介绍不难发现,用来传输数据。具体如下:

  1. .实现了不同的程序之间的数据传输与共享,只要发送和接收都在同一个action就能轻松实现。比如常用的接收到了短信,那么android已经写好一个广播进行处理,解析展示到手机收件箱里,点击显示发送者的内容等,不想接听某人的电话或者短信,都可以使用广播进行实现,所以广播在android中的应用还是十分广泛的。
  2. 通过广播可以实时更新主ui,更然更新主ui的方法还有很多。

怎样实现广播

现在我们就来实现一个简单的广播程序。Android提供了两种注册广播接受者的形式,分别是在程序中动态注册和在xml中指定。他们之间的区别就是作用的范围不同,程序动态注册的接收者只在程序运行过程中有效,而在xml注册的接收者不管你的程序有没有启动有会起作用。首先介绍在程序中动态注册的方式。

  1. 动态注册方式:不是常驻型广播,也就是说广播跟随activity的生命周期。注意: 在activity结束前,移除广播接收器。
  2. 配置文件方式:常驻型xml清单注册,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。不管是否启动这个应用,只要开机,广播就                在后台时刻监听着。

Android有系统广播也可以自定义广播,要想接受广播信息,那么这个广播接收器就得我们自己来实现了,我们可以继承BroadcastReceiver,就可以有一个广播接受器了。有个接受器还不够,我们还得重写BroadcastReceiver里面的onReceiver方法,当来广播的时候我们要干什么,下面一个小程序来进行展示广播的应用。

  一、注册(当实现了广播接收器,还要设置广播接收器接收广播信息的类型,这里是信息:android.provider.Telephony.SMS_RECEIVED)

    1.  动态注册方式

      1.   //生成广播处理
        smsBroadCastReceiver = new SmsBroadCastReceiver();
        //实例化过滤器并设置要过滤的广播
        IntentFilter intentFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); 
        
        //注册广播
        BroadCastReceiverActivity.this.registerReceiver(smsBroadCastReceiver, intentFilter);
        
    2. 在AndroidManifest.xml中配置广播
      1. <?xml version="1.0" encoding="utf-8"?>
        <manifest xmlns:android="http://schemas.android.com/apk/res/android"
              package="spl.broadCastReceiver"
              android:versionCode="1"
              android:versionName="1.0">
            <application android:icon="@drawable/icon" android:label="@string/app_name">
                <activity android:name=".BroadCastReceiverActivity"
                          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=".SmsBroadCastReceiver">
                    <intent-filter android:priority="20">
                        <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
                    </intent-filter>
                </receiver>  
        
            </application>  
        
            <uses-sdk android:minSdkVersion="7" />  
        
            <!-- 权限申请 -->
            <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>  
        
        </manifest>
        

  二、继承BroadcastReceiver,重写onReceiver方法。这里是监听到短信发送,将触发这个广播,然后把短信内容解析出来并展示:

public class SmsBroadCastReceiver extends BroadcastReceiver
{   

    @Override
    public void onReceive(Context context, Intent intent)
    {
        Bundle bundle = intent.getExtras();
        Object[] object = (Object[])bundle.get("pdus");
        SmsMessage sms[]=new SmsMessage[object.length];
        for(int i=0;i<object.length;i++)
        {
            sms[0] = SmsMessage.createFromPdu((byte[])object[i]);
            Toast.makeText(context, "来自"+sms[i].getDisplayOriginatingAddress()+" 的消息是:"+sms[i].getDisplayMessageBody(), Toast.LENGTH_SHORT).show();
        }
        //终止广播,在这里我们可以稍微处理,根据用户输入的号码可以实现短信防火墙。
        abortBroadcast();
    }   

}

  

      

      

      

时间: 2024-08-27 03:26:09

BroadcastReceiver--Android广播机制的相关文章

Android广播机制(转)

1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: 5.Android系统在特定情况下与App之间的消息通

Android总结篇系列:Android广播机制

1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: 5.Android系统在特定情况下与App之间的消息通

Android广播机制

1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: 5.Android系统在特定情况下与App之间的消息通

Android广播机制分析

1.1. 广播简介 Android 广播与生活中的广播概念不同,它是指系统中产生事件后的通知.Android 广播不关心接收者是否收到处理或者如何处理广播,可以说是一种单向的通知.        Android 通过 BraodcastReceiver 来监听系统发出的广播,不同的 BraodcastReceiver 通过设置不同的 fliter 来区分监听广播的类型.有些广播的监听需要相应的权限. 1.2. 注册广播 BraodcastReceiver 必须经过注册才能具有监听功能,注册的方式

Android广播机制的深入学习

部分内容转载自http://www.cnblogs.com/lwbqqyumidi/p/4168017.html 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组

Android广播机制概述

1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: 5.Android系统在特定情况下与App之间的消息通

Android随笔之——Android广播机制Broadcast详解

在Android中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理.这个广播跟我们传统意义中的电台广播有些相似之处.之所以叫做广播,就是因为它只负责“说”而不管你“听不听”,也就是不管你接收方如何处理.另外,广播可以被不只一个应用程序所接收,当然也可能不被任何应用程序所接收. 一.Android广播机制三要素: 1.广播(Broadcast):用于发送广播.是一种广泛应用的在应用间传输信息的机制 2.广播接收器(Broadcast

一篇博客彻底了解Android广播机制

首发于http://blog.csdn.net/pwiling/article/details/47682413,禁止转载 之前数次在程序中碰到Android广播,总是有这个疑问:往往是在发送广播的activity里面进行动态注册,动态注册必须要获得BroadcastReceiver对象,既然我们已经获得了广播接受器的对象,为何还要发送广播,直接用广播接收器的对象调用里面的相关逻辑处理的方法,不行吗?为什么还要绕这么一大圈用广播呢? 以前都是走马观花,这次弄清楚了.在解答这个问题之前,我们首先来

Android广播机制:Broadcast

转载:Android总结篇系列:Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信:

Android(java)学习笔记172:Android广播机制

Android广播机制 android系统中有各式各样的广播,各种广播在Android系统中运行,当"系统/应用"程序运行时便会向Android注册各种广播.Android接收到广播后判断哪种广播需要哪种事件,然后向不同需要事件的应用程序注册事件. 不同的广播可能处理不同的事件,也可能处理相同的广播事件,这时候就需要Android系统的筛选.例如在一个经典的电话黑名单应用程序中,首相通过将黑名单号码保存在数据库里面,当来电的时候,我们接收的来电广播并将黑名单号码与数据库中某个数据做匹配