【问题标题】:android open battery settings programicallyandroid以编程方式打开电池设置
【发布时间】:2018-01-16 12:34:25
【问题描述】:

我正在寻找一种从安卓应用打开电池设置屏幕的方法。

到目前为止,我找到了两个意图:

Intent.ACTION_POWER_USAGE_SUMMARY

Settings.ACTION_BATTERY_SAVER_SETTINGS

但他们都没有打开这个屏幕。

我想知道是否有人知道这种方式。这么简单的事情竟然没有意图,这听起来很奇怪

【问题讨论】:

  • Intent.ACTION_POWER_USAGE_SUMMARY 在安卓设置中打开电池概览。不是你要找的吗?
  • 嗨,在某些设备(如像素)中它可以工作,但在三星 s7 中,例如在发送意图时,我得到的不是电池屏幕,而是电源使用屏幕
  • @user2679041 如果下面的答案回答了您的问题,最好标记一下。
  • @user2679041 您好,您找到解决方法了吗?我面临同样的问题。谢谢

标签: android android-intent battery


【解决方案1】:

“普通”Android 版本上的Settings.ACTION_BATTERY_SAVER_SETTINGS 将显示您要显示的设置页面。

Intent.ACTION_POWER_USAGE_SUMMARY 将引导至显示电池消耗的概览页面。

三星等一些制造商在系统一上构建了自己的实现,例如在此“电池”页面中。在三星设备上,您可以通过直接调用 SmartManager 接口来调用它。代码示例:

if (Build.MANUFACTURER == "samsung") {
    val intent = Intent()
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) {
        intent.component = ComponentName("com.samsung.android.lool", "com.samsung.android.sm.ui.battery.BatteryActivity")
    } else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
        intent.component = ComponentName("com.samsung.android.sm", "com.samsung.android.sm.ui.battery.BatteryActivity")
    }

    try {
        activity?.startActivity(intent);
    } catch (ex: ActivityNotFoundException) {
        // Fallback to global settings
        startActivity(Intent(Settings.ACTION_SETTINGS))
    }
} else {
    startActivity(Intent(Settings.ACTION_BATTERY_SAVER_SETTINGS))
}

您可能还需要其他华为或小米手机壳。

华为可以"com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity"...

...以及基于 MIU 的 "com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"

【讨论】:

  • 你知道在其他手机上找出这些活动名称的方法吗? (手机制造商倾向于自行实施电池管理。)
  • @Razor_alpha 并非如此 - 但是,您可以获取系统的意图并针对上述情况进行调试。此外,还有一些存储库,负责处理此类问题并明智地为制造商提供基本功能。
【解决方案2】:

我知道这已经很老了。但我使用的一个技巧是转到设备设置中的相应设置屏幕,然后在连接到手机时运行:

adb shell
dumpsys window windows | grep -E 'mCurrentFocus'

这将返回当前焦点所在的包名称和活动名称。 如果意图是可调用的,我可以使用它来检查代码。如果是,我启动它。如果不是,我可能会在附近使用不同的屏幕或向用户解释他需要手动执行某些操作等时获得更好的运气......显然,您拥有的设备越多,您可以在运行时创建和检查的意图就越多.我确定在线上有针对不同设备的 Intent 列表。

【讨论】:

  • 这确实很有效,但是使用直接活动是“危险的”,因为如果不删除它们,一些制造商会更改它们,因此它需要尝试/捕获和备用解决方案才能使用。谢谢。
猜你喜欢
  • 2013-10-31
  • 1970-01-01
  • 2015-11-27
  • 1970-01-01
  • 2013-11-28
  • 2013-02-19
  • 2017-08-21
  • 2014-10-28
  • 1970-01-01
相关资源
最近更新 更多