12

在小米的 MI 设备上,他们的安全应用程序中有一个关闭/打开“自动启动”的功能。(在安全应用程序-> 权限-> 自动启动中)

在此处输入图像描述

这意味着当应用程序未运行时,任何广播接收器都不会收到任何内容。所以 BOOT_COMPLETED、USER_PRESENT、CONNECTIVITY_CHANGE 等......不起作用。(在应用程序处于前台后它们会工作一段时间,但很快就会停止)。在用户从小米版本的“最近的应用程序”中滑动应用程序后,它们也会停止工作

甚至 GCM 也无法唤醒它

对于消息传递应用程序,这是一个杀手。

默认情况下,Whatsapp、Messenger、Flipkart 等应用程序是默认启用的(即使这些应用程序没有预装)。

大多数其他应用程序默认禁用此功能。例如。默认情况下禁用 Slack。

有没有办法默认进入这个白名单?

4

1 回答 1

0

您实际上可以为您的应用禁用电池优化。它将关闭应用程序的所有优化,因此它不会被杀死。

boolean isIgnoringBatteryOptimizations = pm.isIgnoringBatteryOptimizations(getPackageName());
if(!isIgnoringBatteryOptimizations){
    Intent intent = new Intent();
    intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
    intent.setData(Uri.parse("package:" + getPackageName()));
    startActivityForResult(intent, MY_IGNORE_OPTIMIZATION_REQUEST);
}

现在检查是否已为您的应用禁用优化。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == MY_IGNORE_OPTIMIZATION_REQUEST) {
        PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
        boolean isIgnoringBatteryOptimizations = pm.isIgnoringBatteryOptimizations(getPackageName());
        if(isIgnoringBatteryOptimizations){
            // Ignoring battery optimization
        }else{
           // Not ignoring battery optimization
        }
    }
}
于 2021-09-18T17:01:32.223 回答