Android代码跳转至电池优化电池信息界面

前言

最近有一款产品有后台保活需求, 无奈甲方太穷, 厂商白名单什么的是别想了, 只能采用原始粗暴的方法, 就是让用户手动开启各种权限, 至于用户体验 这个不存在的 顶多跳转到相关设置页面

其中有一项就是涉及到电池优化的, 禁止电池优化可以延长后台保活时间

以小米手机为例, 给大家列举几个电池相关页面的跳转代码

电池优化页面

页面图示:

1701658389765_.pic

代码如下:

1
2
3
startActivity(Intent().apply {
action = Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS
})

电池信息页面

页面图示:

1681658389761_.pic

代码如下:

1
2
3
4
startActivity(Intent("/").apply {
component = ComponentName("com.android.settings", "com.android.settings.BatteryInfo")
action = "android.intent.action.VIEW"
})

耗电统计页面

页面图示:

1691658389763_.pic

代码如下:

1
2
3
4
5
val powerUsageIntent = Intent(Intent.ACTION_POWER_USAGE_SUMMARY)
val resolveInfo: ResolveInfo? = requireActivity().packageManager.resolveActivity(powerUsageIntent, 0)
if (resolveInfo != null) {
startActivity(powerUsageIntent)
}

休眠时始终保持网络连接

华为手机有这个页面

Screenshot_20220721_171601_com.huawei.systemmanager

想要跳转到这个页面, 首先需要获取到该页面的包名和Activity全路径, 可以使用adb获取, 指令如下;

1
adb -s 设备名  shell dumpsys activity activities

运行结果如图:

image-20220721170255859

其中com.huawei.systemmanager表示包名 也就是applicationId, 而.power.ui.PowerSettingActivity表示Activity路径, 但最前面有个点 因此需要把包名加进去, 最后得到全路径是:

1
com.huawei.systemmanager.power.ui.PowerSettingActivity

有了包名和Activity路径, 那么直接上启动代码:

1
2
3
4
5
6
7
8
startActivity(Intent().apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK
putExtra("packageName", requireActivity().packageName)
component = ComponentName(
"com.huawei.systemmanager",
"com.huawei.systemmanager.power.ui.PowerSettingActivity"
)
})

最后运行报错. 提示没有权限:

1
java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 cmp=com.huawei.systemmanager/.power.ui.PowerSettingActivity (has extras) } from ProcessRecord{439cab1 15282:com.xxx.xxx/u0a211} (pid=15282, uid=10211) not exported from uid 1000

暂时没有找到解决方法, 以上只是一种思路, 仅供参考

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%