android以编程方式打开电池设置

时间:2018-01-16 12:34:25

标签: android android-intent battery

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

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

Intent.ACTION_POWER_USAGE_SUMMARY

Settings.ACTION_BATTERY_SAVER_SETTINGS

但是没有人打开这个屏幕。

我想知道是否有人知道这种方式。听起来很奇怪,这么简单的事情并不存在

2 个答案:

答案 0 :(得分:0)

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

Intent.ACTION_POWER_USAGE_SUMMARY将转到显示电池消耗的概述页面。

某些制造商(例如三星)在系统之一上构建自己的实现,例如在“电池”页面中。在Samsung设备上,您可以通过直接调用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"

答案 1 :(得分:0)

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

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

这将返回当前关注的包名称和活动名称。 使用它,我可以在代码中检查意图是否可以调用。如果是这样,我启动它。如果不是,我可能会在附近的其他屏幕上有更好的运气,或者向用户说明他需要手动执行操作等。显然,您拥有的设备越多,在运行时可以创建和检查的Intent越多。 。我确定在线上有针对不同设备的Intent列表。