一些搭载 Android 6 或更高版本的三星手机没有 android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS

问题描述

我的应用程序需要允许用户为我的应用程序禁用打瞌睡模式,因此该应用程序需要打开 android.settings.IGnorE_BATTERY_OPTIMIZATION_SETTINGS,但在某些三星手机(例如银河 A5。

在这些手机上有类似的吗?其他手机呢?

谢谢。

编辑:我只想说清楚,我试图找到像 A5 这样的三星手机上的实际设置屏幕,而不仅仅是如何打开设置。我需要将用户引导到正确的位置。

编辑:为了进一步澄清,我们没有在三星手机上找到使 android.content.ActivityNotFoundException 返回 isIgnoringBatteryOptimizations() 的设置。这是我的主要问题,需要在该手机上更改哪些设置才能使其变为 true

解决方法

三星 Galaxy A5 在三个操作系统上运行:

Android 6.0.1、Android 7.0、Android 8.0.0 (GFX Bench)

android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS 活动是在 API 23 中添加的。之后没有删除。出于某种原因,三星从未解决过这个错误。唯一的解决方案是将用户带到系统设置屏幕。请参阅以下解决方案:

https://github.com/kontalk/androidclient/commit/be78119687940545d3613ae0d4280f4068125f6a

编辑

在误解了这个问题并澄清了 OP 之后,我添加了一个潜在的解决方案来解决需要访问哪些电源设置。

如果您还没有,请确保您正在使用 android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS。在使用此活动之前,请务必在清单中添加 REQUEST_IGNORE_BATTERY_OPTIMIZATIONS。

活动操作:要求用户允许应用忽略电池优化(即,将它们放在 ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS 显示的应用白名单中)。对于要使用此功能的应用,它还必须持有 Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 权限。

这应该会让用户找到必要的确切选项。

,

如果您有这些手机之一(可能来自某些在线服务的虚拟手机),您可以运行 adb 命令来查找正在运行的活动,这样您就可以检查意图并可能允许您调用它:

adb shell dumpsys activity activities