一,背景
出于省电的目的,Android手机厂商都定制了自己的自启动管理,防止App随意偷跑流量和持续耗电等,同时也加大了推送送达的难度,大厂App或者用户量大的App,没有这个困扰,因为厂商为了更好的体验,把他们加入了白名单。
自启动权限在我的App中,最大的意义就是保证推送的送达和呈现,特别是因为我使用的是透传消息,需要App接收到消息内容后自己决定是否呈现,这时候App就需要自启动权限了。
在引导用户开启自启动权限之前,理论上应当先检查是否有必要进行自启动的开启,很遗憾,目前Android手机厂商都做了定制化,对于App的自启动状态的检查,通过程序代码的方式,检查自启动权限是否开启,目前还没有可行的办法,参考 #How to check MIUI autostart permission programmatically?
ComponentName localComponentName = new ComponentName(MyApplication.getInstance(), BootCompletedReceiver.class);
int i = MyApplication.getInstance().getPackageManager().getComponentEnabledSetting(localComponentName);
其中BootCompletedReceiver应替换为自己定义的Receiver
对于网络上那些利用RECEIVE_BOOT_COMPLETED权限,绕过系统设置进行自启动,过程对用户透明,的方法,个人不建议使用,实现过程参考# service开机启动及自启(由于a