ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS什么都不做

时间:2018-10-02 23:35:18

标签: android android-doze

我不是说什么也没发生。对话框弹出:

“让应用始终在后台运行吗? 允许/拒绝

但是,如果我进入“应用程序”,“电池优化”设置,我的应用程序仍设置为“优化电池使用”。然后,我可以手动将其切换为“不优化”,但是根据文档和此处的所有其他问题,请使用ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS意图并单击允许,应更改此设置。

我正在使用:

此外,该应用程序仅用于研究,不会在商店中销售,因此我不必担心Play商店的政策。

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        Intent intent = new Intent();
        String packageName = getPackageName();
        PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
        if (!pm.isIgnoringBatteryOptimizations(packageName)) {
            intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
            intent.setData(Uri.parse("package:" + packageName));
            startActivity(intent);
        }
    }

我正在使用上面的代码。它会触发,并弹出一个对话框,提示“让应用始终在后台运行吗?”我按允许。

我的问题是按“允许”实际上是做什么的,因为如果您随后进入“应用程序”设置,然后查看“电池优化”,则设置表明该应用程序仍在“优化电池使用率”。

因此会出现以上意图,然后按“允许”实际上并不会做任何事情。

1 个答案:

答案 0 :(得分:1)

我将您的代码放入了一个剪贴项目,在清单中添加了android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS权限,并在Google Pixel(Android 9.0)上运行,一切正常。无需重启。

那么,要么:

  • 您的问题仅在Android 8.1或更旧的设备上出现,并反映了它们在9.0中修复的平台错误,或者

  • 您的问题与某些制造商的某些设备有关

我的猜测是后者,但是您需要进行更广泛的测试才能确定这一点。