广播接收器只响应来自其他应用程序或系统本身的广播消息。 这些消息有时称为事件或意图。 例如,应用程序还可以发起广播,让其他应用程序知道某些数据已下载到设备并可供它们使用,因此广播接收器将拦截此通信并启动适当的操作。
有以下两个重要步骤可以使 BroadcastReceiver 适用于系统广播的意图 −
-
创建广播接收器。
-
注册广播接收器
还有一个附加的步骤,要实现自定义的意图,那么将必须创建并广播意图。
创建广播接收器
广播接收器实现为 BroadcastReceiver 类的子类,并覆盖 onReceive() 方法,其中每条消息都作为 Intent 对象参数接收。
public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show(); } }
注册广播接收器
应用程序通过在 AndroidManifest.xml 文件中注册广播接收器来侦听特定的广播意图。假设我们要为系统生成的事件 ACTION_BOOT_COMPLETED 注册 MyReceiver,一旦 Android 系统完成启动过程,系统就会触发该事件。
![](https://i-blog.csdnimg.cn/blog_migrate/cdb683df2d57f700dd59b139e21dbf7d.jpeg)
广播接收器
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <receiver android:name="MyReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"> </action> </intent-filter> </receiver> </application>
现在,每当您的 Android 设备启动时,它都会被 BroadcastReceiver MyReceiver 拦截,并执行 onReceive() 中实现的逻辑。
Intent 类中有几个系统生成的事件定义为最终静态字段。 下表列出了一些重要的系统事件。
序号 | 事件常数 & 描述 |
---|---|
1 | android.intent.action.BATTERY_CHANGED 包含电池充电状态、电量和其他信息的粘性广播。 |
2 | android.intent.action.BATTERY_LOW |