我正在寻找一种从Android应用程序打开电池设置屏幕的方法。
到目前为止,我发现了两个意图:
Intent.ACTION_POWER_USAGE_SUMMARY
Settings.ACTION_BATTERY_SAVER_SETTINGS
但是没有人打开这个屏幕。
我想知道是否有人知道这种方式。听起来很奇怪,这么简单的事情并不存在
答案 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列表。