赞
踩
Android 中的广播主要是用来在不同的组件间传递消息用的。 app 能够接收来自 Android 系统或者其他 app 所发送的广播。也能像其发送系统提供的或者自定义的广播。例如,Android系统启动时就会发送一个开机广播,如果想要在开机是处理一些逻辑,可以监听该广播。
应用场景如下:
想要接收系统或者app发送的广播,需要提前对广播接收器(BroadcastReceiver
)进行注册。Android提供了两种注册的方式:静态注册和动态注册
静态注册是通过<receiver>
标签在 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"/>
<receiver>
的常用属性:
android:enable
:是否启用广播接收器。android:exported
:设置此广播接收器是否可以接收其他应用所发出的广播。它的默认值取决于是否包含过滤器(<intent-filter>
),如果没有定义<intent-filter>
标签,则默认为 false ,如果有则为 true。android:permission
:外部的 app 只有声明了该属性所指定的权限,才能向这个广播接收器发送消息。android:process
:指定该广播接收器运行的进程。若没有指定则默认运行在 app 的主进程或者 所指定的进程。如果该值以:
开头,则表示开启一个子进程,这个广播接收器就是运行在其中的。onReceiver()
方法 public class CustomBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//弹出一个提示
Toast.makeText(context, "接收到" + intent.getAction() + "广播", Toast.LENGTH_SHORT).show();
}
}
通过以上两步,系统会在 app 安装时就将广播接收器注册完成,相当于这个广播
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。