在MacroDroid中使用forcedoze广播的解决方法
背景介绍
我有一个应用程序名为forcedoze,旨在通过使设备进入更好的“doze”模式来节省电量。目前需要根据时间表开启或关闭此功能,并注意到该应用发送了一个Tasker兼容的广播。然而,由于MacroDroid中缺少使用这些类型广的处理方式,因此我们可以通过脚本功能在宏规则(macro)中运行必要的命令。
目标
将任务定时执行以启停forcedoze服务。
解决方案
了解需要发送哪些数据:尽管问题提供了广播名称和可能的功能状态(启用或禁用),但根据实际日志分析,我们注意到应用程序在实现功能之前启动了一个服务,并且随后通过broadcast进行控制。这表明直接发送广播是不充分的。
使用宏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'
将以上Shell脚本存储在设备中:比如你可以在SD卡的目录下创建
en.sh
和ds.sh
文件,包含相应的脚本内容。在MacroDroid宏规则(macrodroid)中使用
Script
操作运行这个Shell脚本。例如, 执行命令如下:
sh
sh /sdcard/en.sh // 确保替换为正确的文件路径注意事项与优化
- 考虑将启动和停止服务的部分整合到同一个shell脚本中以减少冗余。
在尝试上述步骤后,应能成功利用Macrodroid控制forcedoze应用程序的开启关闭。如有任何技术问题可以随时交流反馈。希望这个方案对你有所帮助!