Thanox icon indicating copy to clipboard operation
Thanox copied to clipboard

使用情景模式几个功能建议

Open anysoft opened this issue 2 years ago • 4 comments

我用情景模式主要做两个自动化,

  1. 解锁屏幕后判断下是否启动过QQ,每天启动一次QQ并下拉滑动刷新一下,确保QQ每天登录一次,且下拉刷新确认网络正常。

  2. 钉钉特定时间段解锁屏幕判断是否打过卡?(状态存变量或者文件),没有的话启动钉钉打卡页面先去打卡,防止忘记打卡,一般来讲打卡时间段手机都会有解锁操作就是容易忘记。😂

Is your feature request related to a problem? Please describe.

  1. ui的接口查找能只查找返回bool不点击么?
  2. 按键点击模式,希望能新增滑动功能?比如能1s内在两个点之间滑动一下。
  3. 情景模式全局变量建议可以提供接口新增/修改,有时候需要存一些状态值供conditions或者actions判断,目前我是读写文件实现的,觉得不太友好,也不太合理。而且涉及到io.read不是相对路径问题。(这个bug好像一直没解决,write是相对路径,就算我写全路径也是相对路径)
  4. 如果能支持代码块功能最好了😀,不用每个脚本重复实现那么多代码。比如我自定义一个读取当前日期的代码块,所有脚本都能直接用。

Describe the solution you'd like

  1. ui模块声明多加一个findviewbyid 和findviewbytext的声明就行了,另外希望能模糊匹配或者正则匹配。
  2. 在指定时间内完成两点之间滑动
  3. 修复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);} ;"
    
    ]
  }
]

anysoft avatar Sep 04 '22 01:09 anysoft

问题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()

Tornaco avatar Sep 05 '22 13:09 Tornaco

问题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. 我觉得下次有啥想法时候可以先去看下你的声明😀 按你的说法来看,情景模式通过编程能够获得很大的权限,能做很多事情,只是需要编程下。

anysoft avatar Sep 06 '22 13:09 anysoft

问题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. 我觉得下次有啥想法时候可以先去看下你的声明😀 按你的说法来看,情景模式通过编程能够获得很大的权限,能做很多事情,只是需要编程下。

不需要反编译,你能用的到的代码都是开源的。

Tornaco avatar Sep 07 '22 01:09 Tornaco