前言
此篇博客简单记录关于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); } } }
注意其他个别广播也能通过静态注册让apk自启动,例如蓝牙配对广播,设置语言,设置时间,设置时区,拨打电话。
End
本文来自博客园,作者:观心静 ,转载请注明原文链接:https://www.cnblogs.com/guanxinjing/p/13501798.html
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。