说明
本文提供的代码仅供参考。不建议用于生产环境。
可能有些地方在最新版本的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整理提供
function copy(fromPath, toPath) {
/*格式:H.copy(原文件路径,要复制到的路径);*/
/*解释:复制文件或文件夹 返回是否复制成功*/
var rp = /^([/][^\/:*?<>|]+[/]?)+$/;
var rp1 = /^([/][^\/:*?<>|]+)+$/;
var rp2 = /^([/][^\/:*?<>|]+)+[/]$/;
try {
if (rp.test(fromPath) == false || files.exists(fromPath) == false) throw "非法原文件地址,H.copy(?,);" + fromPath;
if (rp.test(toPath) == false) throw "非法要复制到的路径地,H.copy(,?);" + toPath;
if (rp1.test(fromPath) == true && rp1.test(toPath) == false) throw "非法要复制到的地址,H.copy(,?);" + toPath;
if (rp2.test(fromPath) == true && rp2.test(toPath) == false) throw "非法要复制到的地址,H.copy(,?);" + toPath;
} catch (err) {
log(err);
exit();
}
if (rp1.test(fromPath) == true) {
/*复制文件*/
return files.copy(fromPath, toPath);
} else if (rp2.test(fromPath)) {
/*复制文件夹*/
/*获取原文件路径文件和文件夹*/
var arr = getFilesFromPath(fromPath);
/*遍历文件路径数组*/
for (var i = 0; i < arr.length; i++) {
/*原文件路径替换成目的路径*/
var path = arr[i].replace(fromPath, toPath);
/*判断路径类型*/
if (files.isDir(arr[i])) {
/*创建目的文件夹*/
files.createWithDirs(path + "/");
} else if (files.isFile(arr[i])) {
/*复制文件到目的文件路径*/
files.copy(arr[i], path);
}
}
/*获取目的路径文件和文件夹*/
var arrToPath = getFilesFromPath(toPath);
/*通过对比原文件和目的文件数量来返回是否复制成功*/
if (arr.length == arrToPath.length) {
return true;
} else {
return false;
}
}
}
function getFilesFromPath(path) {
/*格式:H.getFilesFromPath(文件夹路径)*/
/*解释:获取指定路径所有文件和文件夹 递归遍历 返回文件路径数组*/
var arrDir = new Array();
var arrFile = new Array();
try {
var rp = /^([/][^\/:*?<>|]+[/]?)+$/;
if (rp.test(path) == false) throw "非法文件路径,H.getFilesFromPath(?);" + path;
} catch (err) {
log(err);
exit();
}
/*获取path目录下所有文件夹和文件*/
var arr = files.listDir(path);
/*遍历文件和文件夹*/
for (var i = 0; i < arr.length; i++) {
/*连接路径*/
newPath = files.join(path, arr[i]);
/*判断路径类型*/
if (files.isDir(newPath)) {
arrDir.push(newPath);
/*递归遍历文件夹*/
var arrF = getFilesFromPath(newPath);
arrDir = arrDir.concat(arrF);
} else if (files.isFile(newPath)) {
/*过滤隐藏文件*/
if (arr[i].slice(0, 1) != ".") {
arrFile.push(newPath);
}
}
}
/*按字母升序排序数组*/
arrDir.sort();
arrFile.sort();
/*连接数组并返回*/
return arrDir.concat(arrFile);
}