你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

Auto.js实现自动授权截屏权限

2021/12/11 17:43:38

写在前面:

        本文章记录自己在开发过程中,遇到的基础问题,也同样便于在以后的开发中获得便利。

        如果你是初学Auto.js开发,建议可以读这篇文章Auto.js入门【超基础】,该文章是我入门时拜读的作品,整体感觉很好,基本内容都有所讲到,完全可以适合新手做出一些简单的脚本自用。

一、开发文档

         在开发文档中该方法也提到,有些系统是没有保持始终允许的选项的,题主也是遇到了这个问题,因为写的脚本时定时运行的,不可能自己再手动授权,所以自己写了一个能够自动授权方法,还有很多不足的地方,希望大家可以斧正。

二、进阶方法

1、定义方法(仅个人推荐)

        我一般会选择重新开一个js文件,单独存放我自己定义的一些便捷函数,这样开发时,我只需要复制该文件到文件夹,就可以调用使用我定义的所有函数。

2、代码

//注这里只是简单的解释一下,注释自删
//这是为了方便我调用而采用的定义方法,可以采用其他的定义函数的方式定义
mydefine.getScreenCapture = function (){    
    let Thread = threads.start(function(){
        if(auto.service != null){    //如果已经获得无障碍权限
            //这里是在这个多次扫描屏幕,当扫描到控件就点击
            for( let i = 60; i>=0 ; i--){   
                let Allow = isAllow();
                if(Allow){
                    Allow.click();
                }
                sleep(1000)
            }
        }
        function isAllow(){
            //由于系统之间的差别,同意授权的的文本不同,可以自行改表达式的内容
            return textMatches(/(允许|立即开始|统一)/).findOnce(); 
        }
    });
    if(!requestScreenCapture()){
        log("请求截图权限失败");
        return false;
    }else{
        Thread.interrupt()
        log("已获得截图权限");
        return true;
    }
}

         这里我主要是采用了多线程正则表达式来写这一段代码,不懂得小伙伴可以看开发文档:Auto.js官方API文档传送门,当然开发文档中有些地方写的比较含糊,如果是初接触这两个功能的话可能看不懂,可以自己搜索一些教程了解一下,也可以私信我,给你推荐。

3、调用方法

var mydefine = require("MydefineFun.js");

        在main.js方法中可以采用接收该导出的方式,然后用mydefine就可以就可以调用方法,其中MydefineFun.js是写了方法的文件名。

四、最后

        1、有什么不当之处,欢迎讨论。

        2、有什么问题可以私信我,也可以关注我,后面会找时间更新其他的进阶方法。