如何正确触发 ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 意图?

2024-06-27

如文档中所述:

“持有 REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 权限的应用程序可以触发系统对话框,让用户直接将应用程序添加到白名单,而无需进入设置。该应用程序会触发 ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 意图来触发该对话框。”

有人可以告诉我激发这个意图的正确方法吗?


Java

Intent intent = new Intent();
String packageName = context.getPackageName();
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
if (pm.isIgnoringBatteryOptimizations(packageName))
    intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
else {
    intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
    intent.setData(Uri.parse("package:" + packageName));
}
context.startActivity(intent);

Kotlin

val intent = Intent()
val pm : PowerManager = getSystemService(Context.POWER_SERVICE) as PowerManager
if (pm.isIgnoringBatteryOptimizations(context.packageName)) {
    intent.action = Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS
} else {
    intent.action = Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
    intent.data = Uri.parse("package:${context.packageName}")
}
context.startActivity(intent)

See 这个答案 https://stackoverflow.com/questions/32316491/network-access-in-doze-mode/32424117#32424117了解更多信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何正确触发 ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 意图? 的相关文章

随机推荐