禁用电池优化的权限一直出现在 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)
}
}
我是在小米设备上发生的,至少在模拟器上不会发生。
为了更清楚地说明发生了什么,如下所示:
我需要禁用电池优化才能正确地运行我的应用中的某些服务。
但在不更改配置的情况下,我收到对话框警告电池未被禁用,并且当我再次启动应用程序时需要使用它,因为它已再次启用。
我不太关心这是否是由于 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)
}
}