You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Magisk环境下如何每次解锁屏幕时执行Shell脚本以保持屏幕常关

实现解锁屏幕时自动执行脚本关闭屏幕的方案

因为/data/adb/service.d下的脚本仅在开机时执行一次,无法直接实现每次解锁触发的需求,需要通过后台常驻监听解锁事件的方式来完成,具体步骤如下:

1. 创建常驻监听脚本

在/data/adb/service.d目录下创建脚本文件(比如命名为lock_display.sh),内容如下:

#!/system/bin/sh

# 后台启动监听逻辑,避免阻塞service.d的其他脚本执行
(
    while true; do
        # 检测设备是否处于已解锁状态(通用检测逻辑)
        if dumpsys window policy | grep -q "mDeviceIsUnlocked=true"; then
            # 执行你提供的关闭屏幕命令
            su -c CLASSPATH=/storage/emulated/0/DisplayToggle.dex app_process / DisplayToggle 0
            # 延迟10秒,避免短时间内重复触发(可根据需求调整)
            sleep 10
        fi
        # 每隔2秒检测一次状态(可根据需求调整)
        sleep 2
    done
) &

2. 设置脚本权限

执行以下命令赋予脚本可执行权限:

chmod 755 /data/adb/service.d/lock_display.sh

3. 验证与调试

  • 重启手机后,脚本会随Magisk自动启动并后台常驻
  • 如果解锁后未触发命令,可尝试调整状态检测逻辑:
    • 替换检测语句为logcat监听示例(适配部分ROM):
      # 清除旧日志后监听解锁关键词
      logcat -c
      logcat | while read line; do
          if echo "$line" | grep -q "Screen unlocked"; then
              su -c CLASSPATH=/storage/emulated/0/DisplayToggle.dex app_process / DisplayToggle 0
              sleep 10
          fi
      done
      
    • 确认/storage/emulated/0/DisplayToggle.dex路径正确且文件具备可读权限

注意事项

  • 部分定制ROM的dumpsys输出关键词可能不同,需根据实际情况调整过滤规则
  • 脚本中的延迟时间可根据自己的使用需求修改,避免过度触发

内容的提问来源于stack exchange,提问作者DoDGer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 07:22:50