前言
此篇博客简单记录关于app自启动Activity与自启动Service的功能,这里的自启动是指设备开机后的自启动。并不是自启动保活。
实现开机自启动需要的条件
需要AndroidManifest.xml添加权限,但是添加了不等于解决问题。自启动权限无法通过,动态或者静态权限授权实际获得。还必需要自行引导用户在设置>应用管理>选择指定应用>开启自启动权限。
<!-- 接收开机广播的权限,开机是很危险的行为,所以需要此权限 --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
具体实现
注册广播
此广播必需静态注册
在AndroidManifest.xml 注册广播
<receiver android:name=".SelfStartingReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <!-- 开机广播 --> </intent-filter> </receiver>
自启动Activity
public class SelfStartingReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent bootIntent = new Intent(context, LogoActivity.class); // 这里必须为FLAG_ACTIVITY_NEW_TASK bootIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(bootIntent); } }
自启动Service
public class SelfStartingReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent bootIntent = new Intent(context, PermanentService.class); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { context.startForegroundService(bootIntent); }else { context.startService(bootIntent); } } }
End