全局对象-global

稳定

以下的对象是特定于 Auto.js 的。 有些内置对象是 JavaScript 语言本身的一部分,它们也是全局的。

一些模块中的函数为了使用方便也可以直接全局使用,这些函数在此不再赘述。

sleep(n)

  • n {number} 毫秒数

暂停运行 n毫秒的时间。1 秒等于 1000 毫秒。

currentPackage()

Accessibility
  • return {string}

返回最近一次监测到的正在运行的应用的包名,一般可以认为就是当前正在运行的应用的包名。

此函数依赖于无障碍服务,如果服务未启动,则抛出异常并提示用户启动。

currentActivity()

Accessibility
  • return {string}

返回最近一次监测到的正在运行的 Activity 的名称,一般可以认为就是当前正在运行的 Activity 的名称。

此函数依赖于无障碍服务,如果服务未启动,则抛出异常并提示用户启动。

setClip(text)

  • text {string} 文本

设置剪贴板内容。此剪贴板即系统剪贴板,在一般应用的输入框中"粘贴"既可使用。

getClip()

  • return {string}

返回系统剪贴板的内容。

toast(message)

  • message {string} 要显示的信息

以气泡显示信息 message 几秒。(具体时间取决于安卓系统,一般都是 2 秒)

注意

注意,连续显示多个 toast 时,会排队显示,即使脚本已经结束,toast 可能仍然会显示,记得添加延时,保证气泡消息消失才继续执行:

var _toast_ = toast;
toast = function (message) {
  _toast_(message);
  sleep(2000);
};
for (var i = 0; i < 100; i++) {
  toast(i);
}

或者修改 toast 函数:

importClass(android.widget.Toast);

let toast = (function () {
  let toast = null;
  function showText(msg) {
    var msg = msg.toString();
    if (!toast) {
      toast = Toast.makeText(context, msg, Toast.LENGTH_SHORT);
    } else {
      toast.setText(msg);
    }
    toast.show();
  }
  return showText;
})();
module.exports = toast;

toastLog(message)

  • message {string} 要显示的信息

相当于toast(message);log(message)。显示信息 message 并在控制台中输出。

waitForActivity(activity[, period = 200])

  • activity {string} Activity 名称
  • period {number} 轮询等待间隔(毫秒)

等待指定的 Activity 出现,period 为检查 Activity 的间隔。

waitForPackage(package[, period = 200])

  • package {string} 包名
  • period {number} 轮询等待间隔(毫秒)

等待指定的应用出现。例如waitForPackage("com.tencent.mm")为等待当前界面为微信。

exit()

立即停止脚本运行。

立即停止是通过抛出ScriptInterrupttedException来实现的,因此如果用try...catch把 exit()函数的异常捕捉,则脚本不会立即停止,仍会运行几行后再停止。

random(min, max)

  • min {number} 随机数产生的区间下界
  • max {number} 随机数产生的区间上界
  • return {number}

返回一个在[min...max]之间的随机数。例如 random(0, 2)可能产生 0, 1, 2。

random()

  • return {number}

返回在(0-1)的随机浮点数。

requiresApi(api)

  • api {number} Android 版本号

表示此脚本需要 Android API 版本达到指定版本才能运行。例如requiresApi(19)表示脚本需要在 Android 4.4 以及以上运行。

调用该函数时会判断运行脚本的设备系统的版本号,如果没有达到要求则抛出异常。

可以参考以下 Android API 和版本的对照表:

API LevelSDK 版本发布日期
154.0.32011 年 12 月
164.12012 年 7 月
174.22012 年 11 月
184.32013 年 7 月
194.42013 年 10 月
215.02014 年 11 月
225.12015 年 3 月
236.02015 年 10 月
247.02016 年 8 月
257.12016 年 12 月
268.02017 年 8 月
278.12017 年 12 月
289.02018 年 8 月
2910.02019 年 9 月
3011.02020 年 9 月
3112.02021 年 8 月

Android API 版本open in new window

requiresAutojsVersion(version)

  • version {string} | {number} Auto.js 的版本或版本号

表示此脚本需要 Auto.js 版本达到指定版本才能运行。例如requiresAutojsVersion("3.0.0 Beta")表示脚本需要在 Auto.js 3.0.0 Beta 以及以上运行。

调用该函数时会判断运行脚本的 Auto.js 的版本号,如果没有达到要求则抛出异常。

version 参数可以是整数表示版本号,例如requiresAutojsVersion(250);也可以是字符串格式表示的版本,例如"3.0.0 Beta", "3.1.0 Alpha4", "3.2.0"等。

可以通过app.autojs.versionCodeapp.autojs.versionName获取当前的 Auto.js 版本号和版本。

runtime.requestPermissions(permissions)

  • permissions {Array} 权限的字符串数组

动态申请安卓的权限。例如:

//请求GPS权限
runtime.requestPermissions(["access_fine_location"]);

尽管安卓有很多权限,但必须写入 Manifest 才能动态申请,为了防止权限的滥用,目前 Auto.js 只能额外申请两个权限:

  • access_fine_location GPS 权限
  • record_audio 录音权限

您可以通过 APK 编辑器来增加 Auto.js 以及 Auto.js 打包的应用的权限。

安卓所有的权限列表参见Permissions Overviewopen in new window。(并没有用)

runtime.loadJar(path)

  • path {string} jar 文件路径

加载目标 jar 文件,加载成功后将可以使用该 Jar 文件的类。

// 加载jsoup.jar
runtime.loadJar("./jsoup.jar");
// 使用jsoup解析html
importClass(org.jsoup.Jsoup);
log(Jsoup.parse(files.read("./test.html")));

(jsoup 是一个 Java 实现的解析 Html DOM 的库,可以在Jsoupopen in new window下载)

runtime.loadDex(path)

  • path {string} dex 文件路径

加载目标 dex 文件,加载成功后将可以使用该 dex 文件的类。

因为加载 jar 实际上是把 jar 转换为 dex 再加载的,因此加载 dex 文件会比 jar 文件快得多。可以使用 Android SDK 的 build tools 的 dx 工具把 jar 转换为 dex。

context

全局变量。一个 android.content.Context 对象。

注意该对象为 ApplicationContext,因此不能用于界面、对话框等的创建。