在MacroDroid中自动化Control Forcedozeglue

107次阅读
没有评论

在MacroDroid中使用forcedoze广播的解决方法

背景介绍

我有一个应用程序名为forcedoze,旨在通过使设备进入更好的“doze”模式来节省电量。目前需要根据时间表开启或关闭此功能,并注意到该应用发送了一个Tasker兼容的广播。然而,由于MacroDroid中缺少使用这些类型广的处理方式,因此我们可以通过脚本功能在宏规则(macro)中运行必要的命令。

目标

将任务定时执行以启停forcedoze服务。

解决方案

  1. 了解需要发送哪些数据:尽管问题提供了广播名称和可能的功能状态(启用或禁用),但根据实际日志分析,我们注意到应用程序在实现功能之前启动了一个服务,并且随后通过broadcast进行控制。这表明直接发送广播是不充分的。

  2. 使用宏Droid中的脚本功能来执行必要的命令:为了达到目标, 需要在宏规则中利用Script(脚本)操作并提供适当的Shell代码,以模拟用户权限(在我们的例子中为root)的操作。以下是相关命令行示例:

    • 启用ForceDoze时的shell命令:
      sh
      #!/system/bin/sh
      su -c 'am startservice com.suyashsrijan.forcedoze/.ForceDozeService'
      su -c 'am broadcast -a com.suyashsrijan.forcedoze.ENABLE_FORCEDOZE -n com.suyashsrijan.forcedoze/.EnableForceDozeService'

    • 禁用forceDose时的shell命令:
      sh
      #!/system/bin/sh
      su -c 'am stopservice com.suyashsrijan.forcedoze/.ForceDozeService'
      su -c 'am broadcast -a com.suyashsrijan.forcedoze.DISABLE_FORCEDOZE -n com.suyashsrijan.forcedoze/.DisableForceDozeService'

  3. 将以上Shell脚本存储在设备中:比如你可以在SD卡的目录下创建en.shds.sh文件,包含相应的脚本内容。

  4. 在MacroDroid宏规则(macrodroid)中使用Script操作运行这个Shell脚本。例如, 执行命令如下:
    sh
    sh /sdcard/en.sh // 确保替换为正确的文件路径

  5. 注意事项与优化

    • 考虑将启动和停止服务的部分整合到同一个shell脚本中以减少冗余。

在尝试上述步骤后,应能成功利用Macrodroid控制forcedoze应用程序的开启关闭。如有任何技术问题可以随时交流反馈。希望这个方案对你有所帮助!

正文完