说明
本文提供的代码仅供参考。不建议用于生产环境。
可能有些地方在最新版本的Auto.js上面需要做修改,才能运行。
Auto.js简介
Auto.js是利用安卓系统的“辅助功能”实现类似于按键精灵一样,可以通过代码模拟一系列界面动作的辅助工作。
与“按键精灵”不同的是,它的模拟动作并不是简单的使用在界面定坐标点来实现,而是类似与win一般,找窗口句柄来实现的。
Auto.js使用JavaScript作为脚本语言,目前使用Rhino 1.7.7.2作为脚本引擎,支持ES5与部分ES6特性。
推荐教程
Auto.js Pro安卓全分辨率免ROOT引流脚本开发视频教程(HD超清1080p)
开发文档
Auto.js Pro开发文档 文档尚在完善中,可能有文档描述和代码实际行为有出入的情况。
为什么要使用Auto.js Pro开发脚本,有什么特点?
吸引我使用Auto.js Pro的原因有很多。最主要的几个原因是:
- Auto.js Pro能开发免ROOT的安卓脚本
- Auto.js Pro基于节点操作,能开发全分辨率的脚本,自动适配各种安卓机型
- Auto.js Pro丰富的UI组件,能自定义各种样式的安卓界面
- Auto.js Pro使用的javascript的语法比较优雅,代码可读性强
- Auto.js Pro的命令库非常的丰富,接口比较多
- Auto.js Pro脚本文件体积比较小。1000行的代码,打包后的apk文件只有3-5M,还没有广告
示例代码
// 此代码由飞云脚本圈www.feiyunjs.com整理提供
"ui";
var 背景颜色 = "#dddddd"
var 字号 = "13"
var 字体颜色 = "#dd000000"
var 账号 = {
"123456789": "123456789"
}
ui.statusBarColor(背景颜色)
ui.layout(
<ScrollView id="bg" bg="{{背景颜色}}">
<frame>
<vertical padding="10 10 10">
<text size="{{字号*5}}sp" paddingTop="60" paddingLeft="40" color="{{字体颜色}}">登录</text>
<text id="t1" size="{{字号*2}}sp" color="{{字体颜色}}" marginTop="50" paddingLeft="35"/>
<input id="ID" w="*" marginRight="30" marginLeft="30" singleLine="true" hint="账号" textColorHint="{{字体颜色}}"/>
<text id="t2" size="{{字号*2}}sp" color="{{字体颜色}}" marginTop="10" paddingLeft="35"/>
<input id="Password" w="*" marginRight="30" marginLeft="30" singleLine="true" hint="密码" textColorHint="{{字体颜色}}" password="true"/>
<checkbox id="isRemember" text="记住密码" marginLeft="30"/>
<button id="Login" style="Widget.AppCompat.Button.Colored" h="{{字号*11}}px" size="{{字号*2}}sp" marginTop="20" marginRight="30" marginLeft="30">登录</button>
<horizontal paddingLeft="40" paddingTop="10">
<text id="Forget" size="{{字号*1+4}}sp" color="#00aadd">忘记密码</text>
<text id="Register" size="{{字号*1+4}}sp" color="#00aadd" marginLeft="30">注册账号</text>
</horizontal>
</vertical>
</frame>
</ScrollView>
)
ui.ID.on("touch", () => {
ui.t1.setText("账号")
ui.ID.setHint("")
if (ui.Password.getText() == "") {
ui.t2.setText("")
ui.Password.setHint("密码")
}
})
ui.Password.on("touch", () => {
ui.t2.setText("密码")
ui.Password.setHint("")
if (ui.ID.getText() == "") {
ui.t1.setText("")
ui.ID.setHint("账号")
}
})
ui.bg.on("touch", () => {
if (ui.Password.getText() == "") {
ui.t2.setText("")
ui.Password.setHint("密码")
}
if (ui.ID.getText() == "") {
ui.t1.setText("")
ui.ID.setHint("账号")
}
})
ui.Login.on("click", () => {
if (ui.Password.getText() == "") {
ui.t2.setText("")
ui.Password.setHint("密码")
}
if (ui.ID.getText() == "") {
ui.t1.setText("")
ui.ID.setHint("账号")
}
})
ui.Login.on("click", () => {
if (ui.ID.getText() != "") {
if (ui.Password.getText() != "") {
if (ui.Password.getText() == 账号[ui.ID.getText()]) {
toast("正在登录")
threads.start(function(){
var date = new Date();
var seperator1 = "_";
var seperator2 = "_";
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate +
"_" + date.getHours() + seperator2 + date.getMinutes() +
seperator2 + date.getSeconds();
var login_info = {
ID: ui.ID.getText(),
Password: ui.Password.getText(),
currentdate: currentdate
}
})
} else {
dialogs.alert("输入的账号或密码有误,请重试", "", () => {})
}
} else {
ui.Password.setError("请输入密码")
}
} else {
ui.ID.setError("请输入账号")
}
})