【问题标题】:How to change battery optimization settings manually AFTER requesting to ignore battery optimizations?请求忽略电池优化后如何手动更改电池优化设置?
【发布时间】:2019-06-02 07:53:54
【问题描述】:

我使用以下代码请求应用的忽略电池优化。我可以成功请求许可。我可以使用 isIgnoringBatteryOptimizations() 检测应用程序是否在系统的白名单中。

<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>


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);

我可以看到一个对话框,例如“让应用程序始终在后台运行吗?”,然后单击“是”。我假设它会将我的应用添加到系统电池优化白名单中。

这是我的问题。文档提到用户可以在设置>电池>电池优化中手动配置列表。所以我希望一旦我请求并授予权限,我可以在系统设置中看到它,并且我应该能够手动删除它。但我什么也看不见。我看不出请求与系统设置中的列表之间有任何关系。

他们是否共享相同的列表?如果它们不相同,它们是否等效?

【问题讨论】:

    标签: android optimization battery power-saving doze


    【解决方案1】:

    所以我希望一旦我请求并授予权限,我可以在系统设置中看到它

    实际情况并非如此。文档 (https://developer.android.com/training/monitoring-device-state/doze-standby#support_for_other_use_cases) 说:

    拥有 REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 权限的应用可以触发系统对话框,让用户直接将应用添加到白名单,而无需进入设置。应用触发 ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS Intent 以触发对话框。

    这只是启动对话框的权限。该应用程序不会自动列入白名单。用户必须以任何方式将其显式添加到列表中。

    他们是否共享相同的列表?如果它们不相同,它们是否等效?

    只有一个列表。

    【讨论】:

    • 实际上我可以看到对话框“让应用程序始终在后台运行?”,然后点击“是”。我请求并授予了许可。在此操作之后,我可以通过 isIgnoringBatteryOptimizations() 验证它是否在列表中。我仍然无法在“设置”>“电池”>“电池优化”中查看列表
    猜你喜欢
    • 2021-03-15
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 2022-01-10
    • 2021-05-13
    • 2017-05-04
    相关资源
    最近更新 更多