android|android 开机自启与服务不停止运行
重点第一句话:我做的这个app,是面向内部公司客服或销售的,他们的手机我们是可控的。
反正看到百度上各种自启,有效的?都没提到要在手机上去允许程序自启?我反正是干不过系统,接下来上代码。
//AndroidManifest.xml
//头部manifest
//开启权限
【android|android 开机自启与服务不停止运行】//Broadcast
//解释下:由于自启服务是受系统保护的,由系统发送,包含4.4及以后的系统,我自己注册一个Broadcast Receiver接受广播就行了
static final String action_boot ="android.intent.action.BOOT_COMPLETED";
@Override
public void onReceive(Context context, Intent mintent) {
if (mintent.getAction().equals(action_boot)) {
// 启动完成
Intent intent = new Intent(context, AlarmReceiver.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction("rece.alarm.action");
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
//领导叫我服务一直开着 隔周期去调
long firstime = SystemClock.elapsedRealtime();
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
// 10秒一个周期,不停的发送广播
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstime,10 * 1000, sender);
}
}
//注意 开机自启俩前提(我是这么做的):1.代码布置好后,运行,去手机开启设置允许app自启
//2.重启手机
//AlarmReceiver
@Override
public void onReceive(Context context, Intent intent) {if (intent.getAction().equals("rece.alarm.action")) {
Log.d("AlarmReceiv============","进来");
Intent i = new Intent();
//至于service里你要做什么事情,看你需要什么了,就不上传了。
i.setClass(context, SelfStartingService.class);
// 启动service
// 多次调用startService并不会启动多个service 而是会多次调用onStart
context.startService(i);
}
}
//最后实现成了:1.开机自启 2.双击退出app,按下电源键 3.强制性手动(相当于历史记录)划掉app,这个服务都是开启的。(第三方和手机自带强行停止没试过)
我有idea了再更新,先在这里。。
推荐阅读
- android第三方框架(五)ButterKnife
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- android|android studio中ndk的使用
- Android事件传递源码分析
- RxJava|RxJava 在Android项目中的使用(一)
- Android7.0|Android7.0 第三方应用无法访问私有库
- 深入理解|深入理解 Android 9.0 Crash 机制(二)
- android防止连续点击的简单实现(kotlin)
- Android|Android install 多个设备时指定设备