我遇到了摩托罗拉设备的问题。我正在使用下面的代码来了解用户是否忽略了电池优化。
检查优化的代码是打开还是关闭:
private fun isBatteryOptimizationOff(): Boolean {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val pm = getSystemService(POWER_SERVICE) as PowerManager
pm.isIgnoringBatteryOptimizations(packageName)
} else {
true
}
}
现在,它适用于摩托罗拉以外的所有设备。以下是我在摩托罗拉设备中多次测试后的观察结果。
第一次安装:
- isBatteryOptimizationOff() 返回 false。
- 调用 navigateUserToBatterySettings()。该应用程序未显示在预期的“未优化应用程序”列表中。
- 当我回到应用程序时关闭电池优化后 isBatteryOptimizationOff() 返回 true 并执行我的任务。
- 我卸载应用程序。
对于进一步的安装:
- 当我重新安装应用程序时,isBatteryOptimizationOff() 返回 false。
- 调用 navigateUserToBatterySettings()。该应用程序显示在“未优化的应用程序”列表中,这不是预期的。我点击它并再次点击“未优化”选项。
- 当我回到应用程序时,即使电池优化在电池设置中显示,isBatteryOptimizationOff() 也会返回 false。
导航用户关闭优化的代码:
fun navigateUserToBatterySettings(){
val intent = Intent()
intent.action = Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS
startActivity(intent)
}