电池优化名单 — ShortX 悬浮窗脚本

简介

「电池优化名单」是一个面向 Android 平台的 ShortX 悬浮窗脚本,基于 Rhino/ES5 编写。它以可视化浮窗形式展示设备上所有应用的电池优化状态,并支持一键切换应用是否加入 Doze 白名单(电池优化忽略名单)。

功能特性

  • 全局应用列表:自动获取并展示设备上所有已安装应用
  • 状态识别:区分「已忽略电池优化」与「受限」状态,同时标注系统应用与用户应用
  • 一键切换:点击列表项即可通过反射调用 IDeviceIdleController 切换状态
  • 搜索过滤:支持按应用名或包名实时搜索
  • 统计面板:实时展示系统已忽略 /用户已忽略 /系统受限 /用户受限 四项统计
  • 深浅色自适应:自动跟随系统深浅色模式切换主题,同时尝试拉取系统主题色
  • 失败回退:反射调用失败时自动跳转系统设置页面

使用前提

  • Android 6.0+ (API 23+)
  • 需要 悬浮窗权限SYSTEM_ALERT_WINDOW
  • 核心一键切换功能需要 系统权限或特殊环境(如 ADB、系统应用级别权限),否则会回退到系统设置页面
  • 运行于 ShortX ToolHub 或其他 Rhino/ES5 兼容环境

使用方法

  1. 将代码粘贴至 ShortX 的 JavaScript 执行动作或 ToolHub 脚本中
  2. 触发执行后将弹出悬浮窗
  3. 在列表中点击任意应用即可切换其电池优化状态
  4. 点击顶部 ✕ 或遮罩层关闭窗口

界面说明

  • 顶部状态栏:展示四类应用的数量统计,方便快速了解整体情况
  • 搜索框:支持实时搜索过滤,支持应用名和包名
  • 列表项:包含应用图标、名称、包名、系统/用户标签、状态标签以及开关按钮

注意事项

  • 权限限制:反射调用 IDeviceIdleController 在普通用户设备上可能被 Android 隐藏 API 黑名单或 SELinux 策略拦截,表现为点击后总是跳转系统设置
  • 系统应用:部分系统应用的电池优化状态可能无法修改
  • 兼容性:代码使用 ES5 语法,兼容 Rhino 引擎,但部分 ROM 可能存在自定义限制
  • 安全提示:随意将应用加入电池优化白名单可能导致后台电量消耗增加,请谨慎操作

技术要点

  • 通过 ServiceManager 获取 IDeviceIdleController 接口,实现对 Doze 白名单的读取与修改
  • 同时结合 PowerManager.isIgnoringBatteryOptimizations 获取准确状态
  • 使用 WindowManager.TYPE_APPLICATION_OVERLAY 创建悬浮窗,适配平板与手机尺寸
  • 通过 Resources.getSystem() 动态拉取系统 Material You 主题色
© 版权声明
THE END
喜欢就支持一下吧
点赞0
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容