我正在寻找一种从 Android 应用程序打开电池设置屏幕的方法。
到目前为止我发现了两个意图:
Intent.ACTION_POWER_USAGE_SUMMARY
Settings.ACTION_BATTERY_SAVER_SETTINGS
但他们都没有打开这个屏幕。
我想知道是否有人知道这种方法。听起来很奇怪,如此简单的事情并不存在意图
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"
我知道这已经很老了。但我使用的一个技巧是进入设备设置中的相应设置屏幕,然后在连接到手机时运行:
adb shell
dumpsys window windows | grep -E 'mCurrentFocus'
这将返回当前焦点的包名称和活动名称。 使用它我可以检查代码是否可调用。如果是的话,我启动它。如果不是,我可能会更好地使用附近的不同屏幕,或者向用户解释他需要手动执行某些操作等...显然,您拥有的设备越多,您可以在运行时创建和检查的意图就越多。我确信在线有一个针对不同设备的意图列表。
对于小米(Redmi Note 12),以下作品:
Intent intent = new Intent();
intent.setComponent(new ComponentName(
"com.miui.powerkeeper",
"com.miui.powerkeeper.ui.HiddenAppsContainerManagementActivity"));
startActivity(intent);