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

use*_*041 5 android battery android-intent

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

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

Intent.ACTION_POWER_USAGE_SUMMARY

Settings.ACTION_BATTERY_SAVER_SETTINGS
Run Code Online (Sandbox Code Playgroud)

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

我想知道是否有人知道这样的方式。对如此简单的事情的意图并不存在,这听起来很奇怪

sch*_*ger 5

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

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))
}
Run Code Online (Sandbox Code Playgroud)

您可能还需要为华为或小米提供额外的保护套。

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

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