Thanox
Thanox copied to clipboard
使用情景模式几个功能建议
我用情景模式主要做两个自动化,
-
解锁屏幕后判断下是否启动过QQ,每天启动一次QQ并下拉滑动刷新一下,确保QQ每天登录一次,且下拉刷新确认网络正常。
-
钉钉特定时间段解锁屏幕判断是否打过卡?(状态存变量或者文件),没有的话启动钉钉打卡页面先去打卡,防止忘记打卡,一般来讲打卡时间段手机都会有解锁操作就是容易忘记。😂
Is your feature request related to a problem? Please describe.
- ui的接口查找能只查找返回bool不点击么?
- 按键点击模式,希望能新增滑动功能?比如能1s内在两个点之间滑动一下。
- 情景模式全局变量建议可以提供接口新增/修改,有时候需要存一些状态值供conditions或者actions判断,目前我是读写文件实现的,觉得不太友好,也不太合理。而且涉及到io.read不是相对路径问题。(这个bug好像一直没解决,write是相对路径,就算我写全路径也是相对路径)
- 如果能支持代码块功能最好了😀,不用每个脚本重复实现那么多代码。比如我自定义一个读取当前日期的代码块,所有脚本都能直接用。
Describe the solution you'd like
- ui模块声明多加一个findviewbyid 和findviewbytext的声明就行了,另外希望能模糊匹配或者正则匹配。
- 在指定时间内完成两点之间滑动
- 修复io读写相对,绝对路径的bug,让全局变量支持增删改查。
Describe alternatives you've considered 情景模式的功能能更加完善和方便。
Additional context Add any other context or screenshots about the feature request here.
附上我的脚本。
[
{
"name": "1-day-每天启动QQ和Tim",
"description": "每天启动一次QQ和Tim,然后杀掉后台",
"priority": 1,
"condition": "userPresent==true",
"actions": [
"baseDir='/data/system/thanos_vQaBSFGULYNRFkoN/profile_user_io/';settings='daily/launch_qq.ini';today = new java.text.SimpleDateFormat('yyyyMMdd').format(new java.util.Date());if(!new java.io.File(baseDir + settings).exists()){io.write(settings,'0');};if(io.read(baseDir + settings) != today ){list = globalVarOf$dayldaily_startup;foreach (pkn : list) {ui.showShortToast('启动:'+pkn);activity.launchMainActivityForPackage(pkn);Thread.sleep(5000);input.injectKey(3);Thread.sleep(1000);};ui.showShortToast('等待10秒');Thread.sleep(10000);ui.showShortToast('清理任务');foreach (pkn : list) {task.removeTasksForPackage(pkn);killer.killPackage(pkn);};io.write(settings,today);} ;"
]
}
]
问题3,可能是情景模式的文档不够完善。其实所有thanox app页面上的操作,都可以通过thanos api来实现,thanos api可以获取到负责情景模式相关操作的ProfileManager,ProfileManager可以对全局变量进行查询修改操作:
https://github.com/Tornaco/Thanox/blob/master/android/android_framework/base/src/main/java/github/tornaco/android/thanos/core/profile/ProfileManager.java
@SneakyThrows
public boolean addGlobalRuleVar(String varName, String[] varArray) {
return server.addGlobalRuleVar(varName, varArray);
}
@SneakyThrows
public boolean appendGlobalRuleVar(String varName, String[] varArray) {
return server.appendGlobalRuleVar(varName, varArray);
}
@SneakyThrows
public boolean removeGlobalRuleVar(String varName) {
return server.removeGlobalRuleVar(varName);
}
@SneakyThrows
public String[] getAllGlobalRuleVarNames() {
return server.getAllGlobalRuleVarNames();
}
@SneakyThrows
public String[] getGlobalRuleVarByName(String varName) {
return server.getGlobalRuleVarByName(varName);
}
@SneakyThrows
public boolean isGlobalRuleVarByNameExists(String varName) {
return server.isGlobalRuleVarByNameExists(varName);
}
@SneakyThrows
public GlobalVar[] getAllGlobalRuleVar() {
return server.getAllGlobalRuleVar();
}
情景模式中操作举例:
thanos.profileManager.getAllGlobalRuleVarNames()
问题3,可能是情景模式的文档不够完善。其实所有thanox app页面上的操作,都可以通过thanos api来实现,thanos api可以获取到负责情景模式相关操作的ProfileManager,ProfileManager可以对全局变量进行查询修改操作:
https://github.com/Tornaco/Thanox/blob/master/android/android_framework/base/src/main/java/github/tornaco/android/thanos/core/profile/ProfileManager.java
@SneakyThrows public boolean addGlobalRuleVar(String varName, String[] varArray) { return server.addGlobalRuleVar(varName, varArray); } @SneakyThrows public boolean appendGlobalRuleVar(String varName, String[] varArray) { return server.appendGlobalRuleVar(varName, varArray); } @SneakyThrows public boolean removeGlobalRuleVar(String varName) { return server.removeGlobalRuleVar(varName); } @SneakyThrows public String[] getAllGlobalRuleVarNames() { return server.getAllGlobalRuleVarNames(); } @SneakyThrows public String[] getGlobalRuleVarByName(String varName) { return server.getGlobalRuleVarByName(varName); } @SneakyThrows public boolean isGlobalRuleVarByNameExists(String varName) { return server.isGlobalRuleVarByNameExists(varName); } @SneakyThrows public GlobalVar[] getAllGlobalRuleVar() { return server.getAllGlobalRuleVar(); }
情景模式中操作举例:
thanos.profileManager.getAllGlobalRuleVarNames()
thanks. 我觉得下次有啥想法时候可以先去看下你的声明😀 按你的说法来看,情景模式通过编程能够获得很大的权限,能做很多事情,只是需要编程下。
问题3,可能是情景模式的文档不够完善。其实所有thanox app页面上的操作,都可以通过thanos api来实现,thanos api可以获取到负责情景模式相关操作的ProfileManager,ProfileManager可以对全局变量进行查询修改操作: https://github.com/Tornaco/Thanox/blob/master/android/android_framework/base/src/main/java/github/tornaco/android/thanos/core/profile/ProfileManager.java
@SneakyThrows public boolean addGlobalRuleVar(String varName, String[] varArray) { return server.addGlobalRuleVar(varName, varArray); } @SneakyThrows public boolean appendGlobalRuleVar(String varName, String[] varArray) { return server.appendGlobalRuleVar(varName, varArray); } @SneakyThrows public boolean removeGlobalRuleVar(String varName) { return server.removeGlobalRuleVar(varName); } @SneakyThrows public String[] getAllGlobalRuleVarNames() { return server.getAllGlobalRuleVarNames(); } @SneakyThrows public String[] getGlobalRuleVarByName(String varName) { return server.getGlobalRuleVarByName(varName); } @SneakyThrows public boolean isGlobalRuleVarByNameExists(String varName) { return server.isGlobalRuleVarByNameExists(varName); } @SneakyThrows public GlobalVar[] getAllGlobalRuleVar() { return server.getAllGlobalRuleVar(); }
情景模式中操作举例:
thanos.profileManager.getAllGlobalRuleVarNames()
thanks. 我觉得下次有啥想法时候可以先去看下你的声明😀 按你的说法来看,情景模式通过编程能够获得很大的权限,能做很多事情,只是需要编程下。
不需要反编译,你能用的到的代码都是开源的。