1、获取权限
<!-- 允许程序自启动-->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
2、设置安装路径
软件安装到SD卡是无法获取系统广播的,需安装到内存中
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.bangbang.transform"
android:installLocation="internalOnly">
###### android:installLocation="internalOnly" 这句
3、静态广播
<!--注册接收系统开机广播消息的广播接收者-->
<receiver
android:name=".BroadcastReceiver.MyBroadcastReceiver"
android:enabled="true"
android:exported="true"
tools:ignore="Instantiatable">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
4、广播类
public class MyBroadcastReceiver extends BroadcastReceiver {
private final String ACTION_BOOT = "android.intent.action.BOOT_COMPLETED";
/**
* 接收广播消息后都会进入 onReceive 方法,然后要做的就是对相应的消息做出相应的处理
*
* @param context 表示广播接收器所运行的上下文
* @param intent 表示广播接收器收到的Intent
*/
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, intent.getAction(), Toast.LENGTH_LONG).show();
/**
* 如果 系统 启动的消息,则启动 APP 主页活动
*/
if (ACTION_BOOT.equals(intent.getAction())) {
Intent intentMainActivity = new Intent(context, MainActivity.class);
intentMainActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intentMainActivity);
Toast.makeText(context, "开机完毕~", Toast.LENGTH_LONG).show();
}
}
}