动态注册的广播可以自由的控制注册与注销,在activity中定义内部类还可以实现更改ui。但是必须在启动程序之后才能接收到广播。如果要想实现在程序未启动的情况下就能接收广播,需要使用静态注册。
首先,我们先创建一个广播接收器。右击mainActivity所在的文件夹->New->Other->Broadcast Receiver。会出现一个创建界面。我们将文件命名为BootCompleteReceiver,其中的Exported属性表示是否允许广播接收器接受本程序以外的广播,Enabled属性表示是否启用这个广播接收器。
其次, 修改BootCompleteReceiver,使其接收到系统的开机广播时,启动MainActivity,代码如下:
public class BootCompleteReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Toast.makeText(context,"bbbb", Toast.LENGTH_SHORT).show();
Intent intent1 = new Intent(context, MainActivity.class);
context.startActivity(intent1);
}
}
系统在启动完成时,会发出一条值为android.intent.action.BOOT_COMPLETED的广播。所以下一步,我们在<intent-filter>里添加相应的action。同时,监听系统开机是需要声明权限的,所以使用<uses-permission