禁用电池优化的权限一直出现在 Android API 28 上,尽管没有更改

Permission to disable battery optimization keeps appearing on Android API 28 despite not being changed

我是在小米设备上发生的,至少在模拟器上不会发生。

为了更清楚地说明发生了什么,如下所示:

我需要禁用电池优化才能正确地运行我的应用中的某些服务。

但在不更改配置的情况下,我收到对话框警告电池未被禁用,并且当我再次启动应用程序时需要使用它,因为它已再次启用。

我不太关心这是否是由于 phone 中的个性化层造成的,它通常在其他设备上工作,因为我不希望让应用程序在任何 phone 中 100% 工作] 终端,但如果在大多数设备中再次启用电池优化而不发出警告,那将是一个问题。

有什么方法可以避免启用自动电池优化?或者,至少,这是否通常只发生在具有 API 的少数设备中?

遗憾的是,对于某些供应商而言,电池优化权限实际上不允许您的应用程序忽略电池优化:)

华为、小米、魅族和其他一些供应商可以阻止您的应用程序执行其工作,即使它拥有所有权限。因此,开发人员必须考虑一些变通办法。您也可以联系小米技术支持,询问他们是否有任何方法可以使您的应用程序正常运行。有时他们可以提供帮助。

至于请求权限。我们在申请中使用了以下代码,目前还没有收到任何投诉:


if (isMarshmallowOrHigher()) {
    val pm = getSystemService(POWER_SERVICE) as PowerManager
    val isIgnoringBatteryOptimizations = pm.isIgnoringBatteryOptimizations(
            packageName
    )
    if (!isIgnoringBatteryOptimizations) {
        val intent = Intent()
        intent.action = Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
        intent.data = Uri.parse("package:$packageName")
        startActivityForResult(intent, ignoreOptimizationsRequest)
    }
}