- 开始
- Demo, 调试运行
- Hello World
- 与vue交互
- 常用api
- 支持库(超强)
- 热更新
- 打包
- 远程部署
- 与java交互
- Q&A - 常见问题
- UI设计
- 【API文档】:
- Overview - 综述
- Tip - 阅读说明
- Click - 基于坐标的操作
- 开始 - 基于控件的操作
- Click - 基于控件的操作
- UiSelector - 查找控件
- UiObject - 控件
- App - 应用
- Canvas - 画布
- Console - 控制台
- Crypto - 加解密与消息摘要
- Device - 设备
- Dialogs - 对话框
- Engines - 脚本引擎
- Events - 事件与监听
- Floaty - 悬浮窗
- Files - 文件系统
- Globals - 一般全局函数
- Http - HTTP
- Images - 图片与图色处理
- Keys - 按键模拟
- Media - 多媒体
- Modules - 模块
- Sensors - 传感器
- Shell - Shell命令
- Storages - 本地存储
- Threads - 多线程
- Timers - 定时器
- UI - 用户界面
- Work with Java - 调用Java API
用JS任意控制手机上的APP
目录
vue与控制脚本的交互#
参数解释#
在VUE页面,立即执行控制脚本代码(不建议)
//vue代码
var {autojs} = require('robot-tools');
//【不建议】立即执行控制脚本(无需js文件或执行robotjs脚本,可立即执行本代码)
autojs.exec(function(){ //【不建议】
//脚本代码:
console.log('开始振动 ');
console.show();
device.vibrate(2000);
launchApp('抖音');
});
//偶尔用一下,不要太依赖
//todo:
//1. 作用域在控制脚本内,此处暂不支持对VUE的访问,下一版补上;(如果需要访问VUE,看下面的start方法)
//2. 如果需要用require方法引用其他的js文件,请先用autojs.robot.setJsDir("/sdcard/")设置工作路径;
// 或者用autojs.init({file:'demo.js'})设置个假的文件,工作路径参考下文
执行控制脚本文件#
//vue代码
var {autojs} = require('robot-tools');
var param = {
file: 'demo.js', //[必选],脚本(static/robots/demo.js),或绝对路径/sdcard/xxx.js,或远程URL(也可以用发布的打包加密代码)
vue: this, //可选, 将本vue对象传递给脚本
arguments: {}, //可选, json,传递给脚本的参数。[提示]如果不传递,则系统会默认使用'当时'的vue的data数据;
onMessage: (data)=>{}, //可选,回调函数,脚本给VUE发送消息, 感觉快淘汰了
start: ()=>{}, //可选,脚本启动事件
finish: (obj)=>{},//可选,脚本执行完毕事件
fail: (msg)=>{},//可选,脚本发生意外事件
}
/*
file:
//1. 脚本(static/robots/目录下的demo.js),
//2. 或绝对路径/sdcard/xxx.js,
//3. 或远程URL(也可以用发布的打包加密代码)
arguments:
//可选, json,传递给脚本的参数。
//可以在控制脚本中用app.args获取
//如果不传递参数,则系统会默认传递'当时'的vue的$data数据;
//如果控制脚本想动态获取vue的$data的数据,请往下看
*/
//启动脚本
autojs.start(param);
//停止脚本
autojs.stop();
//仅设置初始化参数,不执行代码
autojs.init(param);
//根据上面设置好的参数,执行代码; 也可以在悬浮脚本上点启动按钮
autojs.start();
autojs.menu.show(); //显示悬浮脚本图标
autojs.menu.move(x,y); //移动悬浮脚本图标
autojs.menu.close(); //隐藏悬浮脚本图标
autojs.showMenu(param); //执行脚本并显示脚本图标
autojs.closeMenu(); //隐藏图标
var isEnabled = autojs.permission();//检查是否启动了无障碍
立即执行(当前实例中)#
//在当前已经运行的脚本中,立即执行小段脚本(需要在robotjs脚本启动后,再调用该方法)
autojs.eval(function(){
//在vue的代码文件里,直接执行脚本代码,
launchApp('抖音');
sleep(4000);
console.log(text('我'));
});
立即执行(新脚本)#
//立即执行控制脚本(代码可以是字符串)
autojs.exec(function(){
console.log(device.getIMEI());
launchApp('抖音');
}
);
autojs.exec(
`
console.log(device.getIMEI());
launchApp('抖音');
`
);
robotjs脚本获取VUE发过来的参数(启动脚本时传递的)#
//[autojs代码]
app.args //json对象,
app.arguments //参数字符串
//内置参数
app.args.scriptStartFrom //null 或 'menu'; 可以通过不同的启动方式,执行不同的代码
app.args._debug //调试模式,还是正式模式
robotjs脚本给VUE层发消息#
//[autojs代码]
app.post2host("hello vue");
//robotjs脚本用这个方法给VUE层发消息,(在上面的onMessage中接收消息)
robotjs脚本直接访问VUE页面对象#
//[autojs代码]
app.vue //控制脚本直接访问vue的对象,上面传递进来的对象this(或别的对象)
app.vue.abc //访问data里的abc变量
app.vue.abc = 999; //给data里面的abc赋值
app.vue.test() //访问VUE的methods里面的test函数。 此用法可以淘汰上面的onMessage回调
例index.vue#
<template>
<view>
{{abc}}
</view>
</template>
<script>
var {autojs} = require('robot-tools');
export default {
data: {
abc: 123
}
methods: {
test() {
console.log('autojs called test.');
}
}
}
</script>