实现原理
系统正常开机的时候,会发送全局广播
Intent.ACTION_BOOT_COMPLETED
在应用内实现一个接收该广播的广播接收器,在监听到广播后,启动本应用主活动
分两步实现
接收到开机广播
用as新建一个BroadcastRecevicer
java部分
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
LoggerUtils.d("监听到开机广播");
}
}
AndroidManifest部分
<!-- 开机广播接收权限 -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver
android:name="com.newland.receiver.BootReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
PS:
注意添加开机广播接收权限,接收器android:exported属性,选择true,允许接收外部广播
在接收到广播后启动应用的主活动
@Override
public void onReceive(Context context, Intent intent) {
LoggerUtils.d("监听到开机广播");
if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())){
//App.getInstance()是自己写的获取获取application的实例类
Intent startIntent=App.getInstance().getPackageManager().getLaunchIntentForPackage(App.getInstance().getPackageName());
context.startActivity(startIntent);
}
}