协程
协程协程见 App 中 示例代码 / 协程
Promise.coroutine()v6.3.7 新增 在该版本引入bluebird后你可以使用bluebird带来的一项协程特性,这个方法接收一个Generator 函数作为参数,函数内部可以像async函数一样编写,返回一个返回值为Promise的函数,说起来可能有点难以理解,具体看下方例子
//async函数写法
let main = async function(s) {
var result = await Promise.resolve("value:"+s);
return result;
}
//Generator 函数写法
let main = Promise.coroutine(function*(s) {
var result = yield Promise.resolve("value:"+s);
return result;
})
main('test').then(log)
可以看到 ...
压缩与解压
压缩与解压压缩与解压压缩//压缩文件路径(必须是完整路径)
var filePath = "/sdcard/脚本.7z";
//目录路径(必须是完整路径)
var dirPath = "/sdcard/脚本";
//压缩类型
//支持的压缩类型包括:
// zip 7z bz2 bzip2 tbz2 tbz gz gzip tgz tar wim swm xz txz。
var type = "7z";
//压缩密码
var password = "password"
//7z加密压缩(若文件已存在则跳过)
//zips.A(type, filePath, dirPath, password)
//压缩
switch (zips.A(type, filePath, dirPath)) {
case 0:
toastLog("压缩成功!文件已保存为: " + filePath)
break;
case 1:
t ...
找图与找色
colors
稳定性: 稳定
在Auto.js有两种方式表示一个颜色。
一种是使用一个字符串”#AARRGGBB”或”#RRGGBB”,其中 AA 是Alpha通道(透明度)的值,RR 是R通道(红色)的值,GG 是G通道(绿色)的值,BB是B通道(蓝色)的值。例如”#ffffff”表示白色, “#7F000000”表示半透明的黑色。
另一种是使用一个16进制的”32位整数” 0xAARRGGBB 来表示一个颜色,例如 0xFF112233表示颜色”#112233”, 0x11223344表示颜色”#11223344”。
可以通过colors.toString()把颜色整数转换为字符串,通过colors.parseColor()把颜色字符串解析为颜色整数。
colorscolors.toString(color)
color {number} 整数RGB颜色值
返回 {string}
返回颜色值的字符串,格式为 “#AARRGGBB”。
colors.red(color)
color {number} | {string} 颜色值
返回 {number}
返回颜色color的R通 ...
多媒体 media
media模块提供多媒体编程的支持。目前仅支持音乐播放和媒体文件扫描。后续会结合UI加入视频播放等功能。
多线程 threads
Threads
稳定性: 实验
Threads 模块提供了多线程支持,可以启动新线程来运行脚本。
脚本主线程会等待所有子线程执行完成后才停止执行,因此如果子线程中有死循环,请在必要的时候调用exit()来直接停止脚本或threads.shutDownAll()来停止所有子线程。
通过threads.start()启动的所有线程会在脚本被强制停止时自动停止。
由于 JavaScript 自身没有多线程的支持,因此您可能会遇到意料之外的问题。
threadsthreads.start(action)
action {Function} 要在新线程执行的函数
返回 Thread
启动一个新线程并执行 action。
例如:
threads.start(function(){
//在新线程执行的代码
while(true){
log("子线程");
}
});
while(true){
log("脚本主线程");
}
通过该函数返回的Thre ...
对话框 dialogs
dialogs 模块提供了简单的对话框支持,可以通过对话框和用户进行交互。
常见问题
Q & AQ & A如何定时运行脚本点击脚本右边的菜单按钮->更多->定时任务即可定时运行脚本,但是必须保持Auto.js后台运行(自启动白名单、电源管理白名单等)。同时,可以在脚本的开头使用device.wakeUp()来唤醒屏幕;但是,Auto.js没有解锁屏幕的功能,因此难以在有锁屏密码的设备上达到效果。
定时任务如何获取外部参数如果一个脚本是用intent”启动”的,比如定时任务中的特定事件(网络状态变化等)触发而启动的,则可以通过engines.myEngine().execArgv.intent获取启动的intent,从而获取外部参数。
如何把图片和脚本一起打包,或者打包多个脚本如果除了单脚本以外还有其他脚本、图片、音乐等资源一起打包,则需要使用项目功能。
点击Auto.js的”+”号,选择项目,填写项目名称、包名等信息以后,点击”√”即可新建一个项目。可以在项目中放多个脚本、模块、资源文件,点击项目工具栏的apk打包图标即可打包一个项目,点击工具栏可以重新配置项目。
例如,主脚本要读取同一文件夹下的图片1.png,再执行找图,则可以通过imag ...
引擎 engines
Engines
稳定性: 稳定
engines 模块包含了一些与脚本环境、脚本运行、脚本引擎有关的函数,包括运行其他脚本,关闭脚本等。
例如,获取脚本所在目录:
toast(engines.myEngine().cwd());
Enginesengines.execScript(name, script[, config])
name {string} 要运行的脚本名称。这个名称和文件名称无关,只是在任务管理中显示的名称。
script {string} 要运行的脚本内容。
config {Object} 运行配置项
delay {number} 延迟执行的毫秒数,默认为 0
loopTimes {number} 循环运行次数,默认为 1。0 为无限循环。
interval {number} 循环运行时两次运行之间的时间间隔,默认为 0
path {Array} | {string} 指定脚本运行的目录。这些路径会用于 require 时寻找模块文件。
在新的脚本环境中运行脚本 script。返回一个ScriptExectuion对象。
所谓新的脚本环境,指定是,脚本中的变量 ...
悬浮窗 floaty
Floatyfloaty模块提供了悬浮窗的相关函数,可以在屏幕上显示自定义悬浮窗,控制悬浮窗大小、位置等。
悬浮窗在脚本停止运行时会自动关闭,因此,要保持悬浮窗不被关闭,可以用一个空的setInterval来实现,例如:
setInterval(()=>{}, 1000);
Floatyfloaty.checkPermission()[4.2.17 新增]
返回 {boolean}
返回当前应用是否有悬浮窗权限。(不会触发请求权限操作)
floaty.requestPermission()[4.2.17 新增]
跳转到系统的悬浮窗权限请求界面。
if (!floaty.checkPermission()) {
// 没有悬浮窗权限,提示用户并跳转请求
toast("本脚本需要悬浮窗权限来显示悬浮窗,请在随后的界面中允许并重新运行本脚本。");
floaty.requestPermission();
exit();
} else {
toastLog('已有悬 ...
shell
shell 即 Unix Shell,在类 Unix 系统提供与操作系统交互的一系列命令。


