有关应用开机自启动的一些记录

在开发中,有时候会开机自动启动我们的应用的需求,之前的普遍做法是有接收开机广播,在广播接收者中启动服务执行任务。

code

manifest



    
        
    
    

public class BootCompleteReceiver extends BroadcastReceiver {
    public BootCompleteReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("renxl","自动启动成功");
    }
}

但是随着国内厂商对 ROM 的定制对应用自启动加了黑白名单,例如华为、魅族、小米等厂商,在 Android 6.0 之前就提供了开机自启动黑白名单的功能,Android 6.0 开始系统也做了自启动功能的限制,主要是为了限制应用的自启动以减少开机时间以及优化电池的使用。

在自启动管理如果将我们的应用的权限关闭之后,值不能收到系统的开机广播,也就无法做到自启动功能了

解决方法是有一些的,下面根据从网上了解到的信息做几方面的总结

一、与厂商合作

在厂商的 ROM 包中默认将自己的 APP 加入白名单,但是这个需要自己 APP 强大的影响力

二、使用辅助功能 AccessibilityService

在 APP 中加入辅助功能,在 APP 中引导用户在系统的设置中打开该应用辅助功能,可以在辅助功能中不做任何的处理。由于辅助功能是系统级别的,所以注册了辅助功能的应用在在启动时也会被激活,这样接收开机广播的接收者也就可以正常接收到开机广播,从而实现功能。但是这个方法有个弊端,就是需要引导用户主动打开辅助功能,如果用户关闭辅助功能则该方法不能正常工作。

三、引导用户

在应用中提示用户主动在开机启动白名单中加入自己的APP,也可顺利接收开机广播完成功能,这也是我最支持的一种方式,只有自己的应用做的好,让用户离不开,持续为用户提供服务,这时才需要开机启动等需求

你可能感兴趣的:(有关应用开机自启动的一些记录)