在Android中总免不了碰到需要开机自启动功能的需求,特别是在一些工业设备中的特定工作模式下更是不可少的一项功能。
要实现开机自启动功能,首先权限是少不了的, 在 AndroidManifest.xml 文件中注册接收开启启动广播权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
然后自己实现一个广播监听器接受自启动广播
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//判断接受属于开机启动的广播
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
Intent intent = new Intent(context, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
}
实现接受广播功能,在程序启动之后跳转到指定的功能界面完成程序的启动。
最后还需要在 AndroidManifest.xml 文件中把实现的自启动的广播进行注册
<receiver
android:name=".base.MyReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<category android:name="android.intent.category.HOME"/>
</intent-filter>
</receiver>
完成这些就实现了开机自启动功能,在下次重启设备的时候就会开机自启动、
后续问题,实现以上功能还是无法开机启动,这时候就要注意一下几点:
- 应用程序无法在安装后自己启动,如果应用程序没有UI界面,必须通过其他方式才能激活启动,如 Activity、Service、Content Provider 等
- 有些应用程序被安装到了sdcard内,安装在sdcard卡内的应用是收不到 BOOT_COMPLETED 广播信息的。
- 在设备设置中禁止了App自启动功能,可在设置中的应用模块里找到对应的应用,查看其是否禁止了自启动功能