当前位置:   article > 正文

Android广播机制简析_sending non-protected broadcast

sending non-protected broadcast

1. 广播机制简介

Android 中的广播主要是用来在不同的组件间传递消息用的。 app 能够接收来自 Android 系统或者其他 app 所发送的广播。也能像其发送系统提供的或者自定义的广播。例如,Android系统启动时就会发送一个开机广播,如果想要在开机是处理一些逻辑,可以监听该广播。

应用场景如下:

  • 同一个app内部的同一个组件内的消息通信(单个或多个线程);
  • 同一个app内部的不同组件之间的消息通信(单个或多个进程)
  • 不同app之间的组件之间的消息通信
  • Android系统在特定情况下与App之间的消息通信

2. 广播的接收

想要接收系统或者app发送的广播,需要提前对广播接收器(BroadcastReceiver)进行注册。Android提供了两种注册的方式:静态注册和动态注册

2.1 静态注册广播接收器

静态注册是通过<receiver>标签在 AndroidManifest.xml 进行声明实现的。通过这种注册方式,再接收到广播时系统会启动应用,即使这个应用没有运行

通过以下步骤可以实现静态注册一个广播接收器

  1. 在 AndroidManifest.xml 中定义一个 <receiver> 标签:
    <receiver
        android:name=".CustomBroadcastReceiver"
        android:exported="true">
        
        <intent-filter>
            <action name="android.intent.action.BOOT_COMPLETED"/> 接收开机广播
            <action name="com.zero.test.CUSTOM_ACTION"/> 自定义广播
        </intent-filter>
    </receiver>
    
    
    //监听开机广播需要指定的权限,要加上下面这一句
    <uses-permission android:name="permission.RECEIVER_BOOT_COMPLETED"/>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

<receiver>的常用属性:

  • android:enable:是否启用广播接收器。
  • android:exported:设置此广播接收器是否可以接收其他应用所发出的广播。它的默认值取决于是否包含过滤器(<intent-filter>),如果没有定义<intent-filter>标签,则默认为 false ,如果有则为 true。
  • android:permission:外部的 app 只有声明了该属性所指定的权限,才能向这个广播接收器发送消息。
  • android:process:指定该广播接收器运行的进程。若没有指定则默认运行在 app 的主进程或者 所指定的进程。如果该值以:开头,则表示开启一个子进程,这个广播接收器就是运行在其中的。
  1. 接着创建一个继承自 BroadcastReceiver 的子类,并重写 onReceiver() 方法
    public class CustomBroadcastReceiver extends BroadcastReceiver {
   
        @Override
        public void onReceive(Context context, Intent intent) {
   
            //弹出一个提示
            Toast.makeText(context, "接收到" + intent.getAction() + "广播", Toast.LENGTH_SHORT).show();
        }
        
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

通过以上两步,系统会在 app 安装时就将广播接收器注册完成,相当于这个广播

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/443446
推荐阅读
相关标签
  

闽ICP备14008679号