写在前面:
本文章记录自己在开发过程中,遇到的基础问题,也同样便于在以后的开发中获得便利。
如果你是初学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、有什么问题可以私信我,也可以关注我,后面会找时间更新其他的进阶方法。
