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

问题描述 投票:0回答:3

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

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

Intent.ACTION_POWER_USAGE_SUMMARY

Settings.ACTION_BATTERY_SAVER_SETTINGS

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

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

android android-intent battery
3个回答
6
投票
“普通”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"


3
投票

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

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

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


0
投票

对于小米(Redmi Note 12),以下作品:

Intent intent = new Intent();
intent.setComponent(new ComponentName(
           "com.miui.powerkeeper",
           "com.miui.powerkeeper.ui.HiddenAppsContainerManagementActivity"));
startActivity(intent);

© www.soinside.com 2019 - 2024. All rights reserved.