【发布时间】:2018-01-26 08:42:56
【问题描述】:
我目前正在实施一项功能,要求用户忽略应用程序的电池优化。这样做的原因是,不幸的是,应用程序的主要功能受到省电模式的严重影响。
为了实现我的目标,我通过创建Intent 并将Action 设置为ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 来提示用户。
虽然在触发Intent之前,我都会检查isPowerSaveMode()和isIgnoringBatteryOptimizations(),以确保在未启用省电模式时不会提示用户;这是该功能的要求。我这样做的方式是:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
boolean isPowerSaveMode = pm.isPowerSaveMode(); // always returns false for Huawei devices
这适用于大多数设备,但对于华为设备,isPowerSaveMode() 始终返回 false。因此,由于先决条件失败,因此永远不会显示提示。
有没有其他人可能遇到过这个问题?如果有,你是怎么解决的?
请注意,Xamarin.Android SDK 中也存在同样的问题。
【问题讨论】:
-
有一个变通方法,已经描述here
-
@Ch4t4r 感谢您的链接。它虽然不能解决我遇到的问题。
-
确定与手机安装的安卓版本无关?如果是的话,你能试试这段代码吗? PowerManager powerManager = (PowerManager) getActivity().getSystemService(Context.POWER_SERVICE); if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && powerManager.isPowerSaveMode()) { }
-
@hugorgor 我确信它与操作系统版本无关。我尝试了几款华为设备,包括运行 Android 6 和 7 的设备。在这两种情况下,即使启用了
isPowerSaveMode(),设备也会在请求isPowerSaveMode()时返回false。我的想法是,与其他制造商(例如三星)相比,该标志的暴露方式不同(工作正常)。但这只是一个理论。 -
也许你应该试试 Xamarin 测试云
标签: android xamarin.android powermanager