`

BroadcastReceiver

阅读更多

广播是一种消息机制,有消息的发送者和接收者,广播可实现组件间通讯,进程间通讯。

 

广播的发送

全局广播分类

1.发送普通广播

Intent intent=new Intent("123");

sendBroadcast(intent);

 

2.发送有序广播:

有序广播是:广播接收者根据自己的优先级先后接收广播

优先级:

<receiver android:name="ddd">

    <intent-filter android:priority="100"/>

</receiver>

priority范围是:Integer.MIN~Integer.MAX,系统注册Receiver的IntentFIlter的priority的范围-1000~1000。当priority一样时,代码注册的接收器优先于静态注册的接收器,先安装高于后安装的广播接收器。

setResult:函数把结果传给下一个接受者,getResult函数来取得上个BroadcastReceiver返回的结果,

abort:函数来让系统丢弃该广播,使用该广播不再传送到别的BroadcastReceiver。

Intent intent=new Intent("123");

sendOrderedBroadcast(intent,null); 

 

3.发送粘性广播(在android 5.0/api 21中deprecated,不再推荐使用)

粘性广播:这种广播发出后会一直存在,直到有人Context.removeStickyBroadcast移除他,发这种广播的应用要申请BROADCAST_STICKY权限。

Intent intent=new Intent("123");

sendStickyBroadcast(intent);

 

广播的权限

(尽量不发给第三方,限制别人收)发出者定义权限,接收者申请权限。

发出者

<permission android:name = "com.android.permission.RECV_XXX"/> 

sendBroadcast(intent,"com.android.permission.RECV_XXX");

接收者

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

 

(尽量不接第三方,限制别人发给我)接收者定义权限,发出者申请权限

接收者

<permission android:name = "com.android.permission.SEND_XXX"/> 

<receiver android:name=".XXXReceiver"   

          android:permission="com.android.permission.SEND_XXX">   

</receiver>  

发出者

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

sendBroadcaset(intent)

 

广播的标志位

intent.addFlags(Intent.FLAG_EXCLUDE_STOPPED_PACKAGES);

从3.1开始广播默认带这个默认带这个标志位。是说,此广播不发给没有运行的应用

intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);

此广播发给没有运行的广播。

 

应用内广播

Intent intent = new Intent();

LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

 

增强广播的安全性:

1.不发给第三方,发送广播时,指定特定广播接收器所在的包名,这样指定包中的接收器才会收到,具体是通过intent.setPackage(packageName)指定在。

2.不接受第三方,<receiver android:name="ddd" android:exported="false">将exported属性人为设置成false默认是true,不接收第三方匹配的广播。

3.让广播带上权限认证permission。

4.使用应用内广播机制,即安全又高效。

 

广播的接收

BroadcastReceiver

//定义
public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String name = intent.getStringExtra("name");
    }
}

// 注册
// 静态注册
<receiver
android:exported=["true" | "false"]
android:permission="string" >
</receiver>

<receiver android:name=".MyBroadcastReceiver" >
    <intent-filter>
        <action android:name="BROADCAST_ACTION" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

// 动态注册
mBroadcastReceiver = new MyBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(BROADCAST_ACTION);
registerReceiver(mBroadcastReceiver, intentFilter);

// 解注册
unregisterReceiver(mBroadcastReceiver);

 

 

 

分享到:
评论

相关推荐

    android BroadcastReceiver相关测试代码

    在Android开发中,BroadcastReceiver是系统广播机制的重要组成部分,它允许应用程序在不直接交互的情况下接收并响应系统或自定义广播事件。BroadcastReceiver是Android四大组件之一,用于处理系统全局的事件通知。本...

    broadcastReceiver

    ### 广播接收器(BroadcastReceiver)在Android中的应用与管理 #### 概念 `BroadcastReceiver`作为Android四大组件之一,在系统与应用之间扮演着关键的信息传递角色。不同于Activity等具有用户界面的组件,`...

    Android \BroadCastReceiver 简介

    所以,`BroadcastReceiver` 的生命周期非常短暂,必须高效地处理接收到的广播事件。 在 Android 系统中,`BroadcastReceiver` 是一个关键组件,它允许应用程序对外部事件进行响应,比如系统级别的事件(如电池状态...

    BroadCastReceiver

    在Android系统中,`BroadcastReceiver`(广播接收者)是一种重要的组件,用于监听并响应系统或应用程序发送的各种广播意图(Intent)。广播是Android系统中的一种全局通知机制,它允许应用程序在不相互依赖的情况下...

    动态注册broadcastreceiver短信接受

    在Android系统中,BroadcastReceiver是一种用于接收系统广播事件的组件,它可以监听系统或应用程序发出的各种广播意图(Intent)。本主题将深入探讨如何实现动态注册BroadcastReceiver以接收短信。动态注册相比静态...

    BroadcastReceiver的生命周期

    在Android系统中,BroadcastReceiver是应用组件之一,用于接收并响应系统或应用程序广播事件。BroadcastReceiver的生命周期简单而高效,主要涉及两个关键阶段:注册和接收广播。 标题“BroadcastReceiver的生命周期...

    BroadcastReceiver学习(01)

    在Android系统中,BroadcastReceiver(广播接收者)是四大组件之一,它负责监听并响应系统或应用程序发布的广播意图。BroadcastReceiver允许应用在不运行的情况下接收到消息,从而实现后台通信和事件处理。在这个...

    《BroadcastReceiver详解》对应源码

    BroadcastReceiver在Android系统中扮演着一个至关重要的角色,它是Android应用程序间通信(IPC)的一种方式,使得应用可以在没有用户交互的情况下接收系统或其它应用发送的广播消息。在本《BroadcastReceiver详解》...

    BroadcastReceiver广播接收器演示demo

    BroadcastReceiver,中文名为广播接收器,是Android系统中四大组件之一,用于接收系统或应用程序发布的广播事件。在Android系统中,任何组件或者服务都可以发送广播,而BroadcastReceiver则可以监听并响应这些广播,...

    Android的BroadcastReceiver简单示例

    在Android系统中,BroadcastReceiver(广播接收者)是四大组件之一,它负责监听系统或应用程序发布的广播消息。BroadcastReceiver能够使应用在不运行的情况下对特定事件做出响应,从而实现跨应用通信。本示例将详细...

    Android学习之BroadcastReceiver总结

    在Android系统中,BroadcastReceiver(广播接收者)是四大组件之一,它扮演着接收系统或应用广播消息的重要角色。BroadcastReceiver使得应用可以在不运行的情况下,响应系统或其它应用发出的事件,例如系统启动完成...

    BroadcastReceiver使用demo

    BroadcastReceiver是Android系统中的一个重要组件,它用于接收并响应系统或应用广播事件。在这个"BroadcastReceiver使用demo"中,我们将深入探讨BroadcastReceiver的工作原理、如何创建与注册、以及如何发送和接收...

    安卓应用BroadcastReceiver源码.rar

    【BroadcastReceiver源码解析】 BroadcastReceiver是Android系统中的一个重要组件,它是Android应用程序接收系统广播事件的主要途径。在Android系统中,任何全局性、瞬时性的事件,如网络连接状态变化、系统启动...

    BroadcastReceiver 最好作为内部类

    在Android开发中,`BroadcastReceiver` 是一个至关重要的组件,它允许应用程序接收并响应系统或应用广播事件。本文将深入探讨`BroadcastReceiver`作为内部类的优缺点以及如何使用。 首先,让我们理解`...

    android demo,BroadcastReceiver源代码的实现。

    在Android系统中,BroadcastReceiver(广播接收者)是四大组件之一,它负责监听并响应系统或应用程序发布的广播意图(Intent)。这个"android demo,BroadcastReceiver源代码的实现"是一个示例,旨在帮助开发者理解...

    BroadcastReceiver通过接口回调更新界面

    在Android开发中,BroadcastReceiver(广播接收器)是一种非常重要的组件,它用于监听系统或应用程序广播事件,并在接收到特定广播后执行相应的操作。在标题"BroadcastReceiver通过接口回调更新界面"中,我们关注的...

    BroadcastReceiver的小案例

    在Android系统中,BroadcastReceiver(广播接收者)是四大组件之一,它负责监听系统或应用程序发布的广播事件。BroadcastReceiver能够让我们在不启动任何Activity或Service的情况下接收和处理系统消息,从而实现应用...

    Android 四大组件之BroadcastReceiver

    在Android系统中,四大组件是应用程序的核心组成部分,包括Activity、Service、Content Provider和BroadcastReceiver。本篇文章将聚焦于BroadcastReceiver,讲解如何在Android应用中使用它,特别是静态注册和动态...

Global site tag (gtag.js) - Google Analytics