简介
「电池优化名单」是一个面向 Android 平台的 ShortX 悬浮窗脚本,基于 Rhino/ES5 编写。它以可视化浮窗形式展示设备上所有应用的电池优化状态,并支持一键切换应用是否加入 Doze 白名单(电池优化忽略名单)。
功能特性
- 全局应用列表:自动获取并展示设备上所有已安装应用
- 状态识别:区分「已忽略电池优化」与「受限」状态,同时标注系统应用与用户应用
- 一键切换:点击列表项即可通过反射调用 IDeviceIdleController 切换状态
- 搜索过滤:支持按应用名或包名实时搜索
- 统计面板:实时展示系统已忽略 /用户已忽略 /系统受限 /用户受限 四项统计
- 深浅色自适应:自动跟随系统深浅色模式切换主题,同时尝试拉取系统主题色
- 失败回退:反射调用失败时自动跳转系统设置页面
使用前提
- Android 6.0+ (API 23+)
- 需要 悬浮窗权限(
SYSTEM_ALERT_WINDOW) - 核心一键切换功能需要 系统权限或特殊环境(如 ADB、系统应用级别权限),否则会回退到系统设置页面
- 运行于 ShortX ToolHub 或其他 Rhino/ES5 兼容环境
使用方法
- 将代码粘贴至 ShortX 的 JavaScript 执行动作或 ToolHub 脚本中
- 触发执行后将弹出悬浮窗
- 在列表中点击任意应用即可切换其电池优化状态
- 点击顶部 ✕ 或遮罩层关闭窗口
界面说明
- 顶部状态栏:展示四类应用的数量统计,方便快速了解整体情况
- 搜索框:支持实时搜索过滤,支持应用名和包名
- 列表项:包含应用图标、名称、包名、系统/用户标签、状态标签以及开关按钮
注意事项
- 权限限制:反射调用
IDeviceIdleController在普通用户设备上可能被 Android 隐藏 API 黑名单或 SELinux 策略拦截,表现为点击后总是跳转系统设置 - 系统应用:部分系统应用的电池优化状态可能无法修改
- 兼容性:代码使用 ES5 语法,兼容 Rhino 引擎,但部分 ROM 可能存在自定义限制
- 安全提示:随意将应用加入电池优化白名单可能导致后台电量消耗增加,请谨慎操作
技术要点
- 通过
ServiceManager获取IDeviceIdleController接口,实现对 Doze 白名单的读取与修改 - 同时结合
PowerManager.isIgnoringBatteryOptimizations获取准确状态 - 使用
WindowManager.TYPE_APPLICATION_OVERLAY创建悬浮窗,适配平板与手机尺寸 - 通过
Resources.getSystem()动态拉取系统 Material You 主题色
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END





暂无评论内容