前言
最近有一款产品有后台保活需求, 无奈甲方太穷, 厂商白名单什么的是别想了, 只能采用原始粗暴的方法, 就是让用户手动开启各种权限, 至于用户体验 这个不存在的 顶多跳转到相关设置页面
其中有一项就是涉及到电池优化的, 禁止电池优化可以延长后台保活时间
以小米手机为例, 给大家列举几个电池相关页面的跳转代码
电池优化页面
页面图示:
代码如下:
1 | startActivity(Intent().apply { |
电池信息页面
页面图示:
代码如下:
1 | startActivity(Intent("/").apply { |
耗电统计页面
页面图示:
代码如下:
1 | val powerUsageIntent = Intent(Intent.ACTION_POWER_USAGE_SUMMARY) |
休眠时始终保持网络连接
华为手机有这个页面
想要跳转到这个页面, 首先需要获取到该页面的包名和Activity
全路径, 可以使用adb
获取, 指令如下;
1 | adb -s 设备名 shell dumpsys activity activities |
运行结果如图:
其中com.huawei.systemmanager
表示包名 也就是applicationId
, 而.power.ui.PowerSettingActivity
表示Activity
路径, 但最前面有个点 因此需要把包名加进去, 最后得到全路径是:
1 | com.huawei.systemmanager.power.ui.PowerSettingActivity |
有了包名和Activity
路径, 那么直接上启动代码:
1 | startActivity(Intent().apply { |
最后运行报错. 提示没有权限:
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 |
暂时没有找到解决方法, 以上只是一种思路, 仅供参考
本文为作者原创转载时请注明出处 谢谢