锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

【Auto.JS】Autojs官方提取文档使用说明函数 (1)

时间:2023-07-04 22:07:00 dx4电量变送器

[Auto.js]第一篇:Auto.js(1)

[Auto.js]第二篇:Auto.js(2)


Auto.js文档综述

Auto.js使用JavaScript目前用作脚本语言Rhino 1.7.7.2支持脚本引擎ES5与部分ES6特性。

  • 因为Auto.js是基于JavaScript的,学习Auto.js的API建议先学习JavaScript可以使用教程前的两个基本语法和内置对象JavaScript学习教程链接。
  • 假如你想用TypeScript为了开发,一些开发者已经宣布可以使用它TypeScript进行Auto.js参见开发工具Auto.js DevTools
  • 如果你想在电脑上开发,而不是在手机上Auto.js,可以使用VS Code以及相应的Auto.js插件可以将编辑在计算机上的脚本推送到手机上。Auto.js-VSCode-Extension

本文档的章节大致分为模块,一般可分为"自动操作"类模块(控件操作、触摸模拟、按键模拟等)。)和其他类型的模块(设备、应用程序、界面等)。

"自动操作"部分大致可以分为基于控制和基于坐标的操作。基于坐标的操作是传统的按键精灵、触摸精灵等脚本软件,通过屏幕坐标点击和长按指定位置模拟操作,以达到目的。click(100, 200),press(100, 200, 500)等。这种方法在游戏剧本中更可行,结合图片找到颜色,坐标放缩功能也可以实现更好的兼容性。然而,这种方法很难达到的软件脚本来说很难达到预期的效果,7.0以上版本或root只能执行权限。因此,对于一般软件脚本(如批量添加联系人、自动提取短信验证码等),我们采用基于控件的模拟操作模式,结合通知和关键事项,实现更好的工作流。这些部分的文档参见基于控件的操作基于坐标的操作

其它部分主要包括:

  • app: 应用程序。启动应用程序,卸载应用程序,使用应用程序查看、编辑文件、访问网页、发送应用室广播等。
  • console: 控制台。记录运行的日志、错误、信息等。
  • device: 设备。获取设备屏幕宽度、系统版本等信息,控制设备音量、亮度等。
  • engines: 脚本引擎。用于启动其他脚本。
  • events: 事件与监控。按键监控,通知监控,触摸监控等。
  • floaty: 悬挂窗。用于显示自定义悬挂窗。
  • files: 文件系统。创建文件,获取信息,读写。
  • http: HTTP。发送HTTP请求,例如GET, POST等。
  • images, colors: 图片和图色处理。截图,剪图,找图找色,读保存图片等。
  • keys: 按钮模拟。比如音量键,Home键模拟等。
  • shell: Shell命令。
  • threads: 多线程支持。
  • ui: UI界面。用于显示自定义UI界面,与用户互动。

除此之外,Auto.js内置了对Promise

Q & A

如何定期操作脚本?

点击脚本右侧的菜单按钮->更多->脚本可以定期操作,但必须保持定时任务Auto.js后台运行(自启动白名单、电源管理白名单等。).同时,可以在脚本开头使用device.wakeUp()但是,Auto.js没有解屏幕的功能,在有锁屏密码的设备上很难达到效果。

如何获得外部参数?

假如一个脚本是用的intent"启动"例如,如果在定时任务中触发并启动特定事件(网络状态变化等),则可以通过engines.myEngine().execArgv.intent获取启动的intent,从而获取外部参数。

如何将图片和脚本一起打包,或者打包多个脚本

如果除了单脚本以外还有其他脚本、图片、音乐等资源一起打包,则需要使用项目功能。

点击Auto.js的"+"号,选择项目,填写项目名称、包名等信息以后,点击"√"即可新建一个项目。可以在项目中放多个脚本、模块、资源文件,点击项目工具栏的apk打包图标即可打包一个项目,点击工具栏可以重新配置项目。

例如,主脚本要读取同一文件夹下的图片1.png,再执行找图,则可以通过images.read("./1.png")来读取,其中"./1.png"表示同一目录1.png图片;ui中的图片控件要引用同一文件夹的2.png图片则为。Auto.js内置的函数和模块都支持相对路径,但是,其他情况则需要使用files.path()函数来把相对路径转换为绝对路径。

如何使打包的应用不显示主界面

需要使用项目功能。新建项目后,修改项目下的project.json文件,增加以下条目:

"launchConfig": {

    "hideLogs": true

}

例如:

{

  "name": "项目名称",

  "versionName": "1.0.0",

  "versionCode": 1,

  "packageName": "org.autojs.example",

  "main": "main.js",

  "launchConfig": {

      "hideLogs": true

  }

}

"launchConfig"表示启动配置,"hideLogs"表示隐藏日志。

参见项目与项目配置。

Auto.js自带的模块和函数中没有的功能如何实现

由于Auto.js支持直接调用Android的API,对于Auto.js没有内置的函数,可以直接通过修改Android代码为JavaScript代码实现。例如旋转图片的Android代码为:

import android.graphics.Bitmap;

import android.graphics.Matrix;

 

public static Bitmap rotate(final Bitmap src,

                            final int degrees,

                            final float px,

                            final float py) {

    if (degrees == 0) return src;

    Matrix matrix = new Matrix();

    matrix.setRotate(degrees, px, py);

    Bitmap ret = Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true);

    return ret;

}

转换为JavaScript的代码后为:

importClass(android.graphics.Bitmap);

importClass(android.graphics.Matrix);

 

function rotate(src, degrees, px, py){

    if (degrees == 0) return src;

    var matrix = new Matrix();

    matrix.setRotate(degrees, px, py);

    var ret = Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true);

    return ret;

}

有关调用Android和Java的API的更多信息,参见Work with Java

关于本文档

本文档为Auto.js的文档,解释了Auto.js各个模块的API的使用方法、作用和例子。

文档借助Node.js的文档构建工具生成,并在github上开源(https://github.com/hyb1996/AutoJs-Docs ),目前由开发者维护。

API稳定性

由于Auto.js处于活跃的更新和开发状态,API可能随时有变动,我们用Stability来标记模块、函数的稳定性。这些标记包括:

Stability: 0 - Deprecated

 

弃用的函数、模块或特性,在未来的更新中将很快会被移除或更改。应该在脚本中移除对这些函数的使用,以免后续出现意料之外的问题。

Stability: 1 - Experimental

 

实验性的函数、模块或特性,在未来的更新中可能会更改或移除。应该谨慎使用这些函数或模块,或者仅用作临时或试验用途。

Stability: 2 - Stable

 

稳定的函数、模块或特性,在未来的更新中这些模块已有的函数一般不会被更改,会保证后向兼容性。

如何阅读本文档

先看一个例子,下面是基于控件的操作模拟的章节中input函数的部分说明。

input([i, ]text)

  • i {number} 表示要输入的为第i + 1个输入框
  • text {string} 要输入的文本

input表示函数名,括号内的[i, ]text为函数的参数。下面是参数列表,"number"表示参数i的类型为数值,"string"表示参数text的类型为字符串。

例如input(1, "啦啦啦"),执行这个语句会在屏幕上的第2个输入框处输入"啦啦啦"。

方括号[ ]表示参数为可选参数。也就是说,可以省略i直接调用input。例如input("嘿嘿嘿"),按照文档,这个语句会在屏幕上所有输入框输入"嘿嘿嘿"。

调用有可选参数的函数时请不要写上方括号。

我们再看第二个例子。图片和图色处理中detectsColor函数的部分说明。

images.detectsColor(image, color, x, y[, threshold = 16, algorithm = "diff"])

  • image {Image} 图片
  • color {number} | {string} 要检测的颜色
  • x {number} 要检测的位置横坐标
  • y {number} 要检测的位置纵坐标
  • threshold {number} 颜色相似度临界值,默认为16。取值范围为0~255。
  • algorithm {string} 颜色匹配算法,包括:
    • "equal": 相等匹配,只有与给定颜色color完全相等时才匹配。
    • "diff": 差值匹配。与给定颜色的R、G、B差的绝对值之和小于threshold时匹配。
    • "rgb": rgb欧拉距离相似度。与给定颜色color的rgb欧拉距离小于等于threshold时匹配。
    • "rgb+": 加权rgb欧拉距离匹配(LAB Delta E)。
    • "hs": hs欧拉距离匹配。hs为HSV空间的色调值。

同样地,[, threshold = 16, algorithm = "rgb"]为可选参数,并且,等于号=后面的值为参数的默认值。也就是如果不指定该参数,则该参数将会为这个值。

例如 images.detectsColor(captureScreen(), "#112233", 100, 200) 相当于 images.detectsColor(captureScreen(), "#112233", 100, 200, 16, "rgb"), 而images.detectsColor(captureScreen(), "#112233", 100, 200, 64) 相当于images.detectsColor(captureScreen(), "#112233", 100, 200, 64, "rgb")

调用有可选参数及默认值的函数时请不要写上方括号和等于号。

应用—App

app模块提供一系列函数,用于使用其他应用、与其他应用交互。例如发送意图、打开文件、发送邮件等。

同时提供了方便的进阶函数startActivity和sendBroadcast,用他们可完成app模块没有内置的和其他应用的交互。

app.versionCode

  • {number}

当前软件版本号,整数值。例如160, 256等。

如果在Auto.js中运行则为Auto.js的版本号;在打包的软件中则为打包软件的版本号。

toastLog(app.versionCode);

app.versionName

  • {string}

当前软件的版本名称,例如"3.0.0 Beta"。

如果在Auto.js中运行则为Auto.js的版本名称;在打包的软件中则为打包软件的版本名称。

toastLog(app.verionName);

app.autojs.versionCode

  • {number}

Auto.js版本号,整数值。例如160, 256等。

app.autojs.versionName

  • {string}

Auto.js版本名称,例如"3.0.0 Beta"。

app.launchApp(appName)

  • appName {string} 应用名称

通过应用名称启动应用。如果该名称对应的应用不存在,则返回false; 否则返回true。如果该名称对应多个应用,则只启动其中某一个。

该函数也可以作为全局函数使用。

launchApp("Auto.js");

app.launch(packageName)

  • packageName {string} 应用包名

通过应用包名启动应用。如果该包名对应的应用不存在,则返回false;否则返回true。

该函数也可以作为全局函数使用。

//启动微信

launch("com.tencent.mm");

app.launchPackage(packageName)

  • packageName {string} 应用包名

相当于app.launch(packageName)

app.getPackageName(appName)

  • appName {string} 应用名称

获取应用名称对应的已安装的应用的包名。如果该找不到该应用,返回null;如果该名称对应多个应用,则只返回其中某一个的包名。

该函数也可以作为全局函数使用。

var name = getPackageName("QQ"); //返回"com.tencent.mobileqq"

app.getAppName(packageName)

  • packageName {string} 应用包名

获取应用包名对应的已安装的应用的名称。如果该找不到该应用,返回null。

该函数也可以作为全局函数使用。

var name = getAppName("com.tencent.mobileqq"); //返回"QQ"

app.openAppSetting(packageName)

  • packageName {string} 应用包名

打开应用的详情页(设置页)。如果找不到该应用,返回false; 否则返回true。

该函数也可以作为全局函数使用。

app.viewFile(path)

  • path {string} 文件路径

用其他应用查看文件。文件不存在的情况由查看文件的应用处理。

如果找不出可以查看该文件的应用,则抛出ActivityNotException

//查看文本文件

app.viewFile("/sdcard/1.txt");

app.editFile(path)

  • path {string} 文件路径

用其他应用编辑文件。文件不存在的情况由编辑文件的应用处理。

如果找不出可以编辑该文件的应用,则抛出ActivityNotException

//编辑文本文件

app.editFile("/sdcard/1.txt/);

app.uninstall(packageName)

  • packageName {string} 应用包名

卸载应用。执行后会会弹出卸载应用的提示框。如果该包名的应用未安装,由应用卸载程序处理,可能弹出"未找到应用"的提示。

//卸载QQ

app.uninstall("com.tencent.mobileqq");

app.openUrl(url)

  • url {string} 网站的Url,如果不以"http://"或"https://"开头则默认是"http://"。

用浏览器打开网站url。

如果没有安装浏览器应用,则抛出ActivityNotException

app.sendEmail(options)

  • options {Object} 发送邮件的参数。包括:
    • email {string} | {Array} 收件人的邮件地址。如果有多个收件人,则用字符串数组表示
    • cc {string} | {Array} 抄送收件人的邮件地址。如果有多个抄送收件人,则用字符串数组表示
    • bcc {string} | {Array} 密送收件人的邮件地址。如果有多个密送收件人,则用字符串数组表示
    • subject {string} 邮件主题(标题)
    • text {string} 邮件正文
    • attachment {string} 附件的路径。

根据选项options调用邮箱应用发送邮件。这些选项均是可选的。

如果没有安装邮箱应用,则抛出ActivityNotException

//发送邮件给10086@qq.com和10001@qq.com。

app.sendEmail({

    email: ["10086@qq.com", "10001@qq.com"],

    subject: "这是一个邮件标题",

    text: "这是邮件正文"

});

app.startActivity(name)

  • name {string} 活动名称,可选的值为:
    • console 日志界面
    • settings 设置界面

启动Auto.js的特定界面。该函数在Auto.js内运行则会打开Auto.js内的界面,在打包应用中运行则会打开打包应用的相应界面。

app.startActivity("console");

应用进阶: 意图Intent

Intent(意图) 是一个消息传递对象,您可以使用它从其他应用组件请求操作。尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个:

  • 启动活动(Activity): Activity 表示应用中的一个"屏幕"。例如应用主入口都是一个Activity,应用的功能通常也以Activity的形式独立,例如微信的主界面、朋友圈、聊天窗口都是不同的Activity。通过将 Intent 传递给 startActivity(),您可以启动新的 Activity 实例。Intent 描述了要启动的 Activity,并携带了任何必要的数据。
  • 启动服务(Service): Service 是一个不使用用户界面而在后台执行操作的组件。通过将 Intent 传递给 startService(),您可以启动服务执行一次性操作(例如,下载文件)。Intent 描述了要启动的服务,并携带了任何必要的数据。
  • 传递广播: 广播是任何应用均可接收的消息。系统将针对系统事件(例如:系统启动或设备开始充电时)传递各种广播。通过将 Intent 传递给 sendBroadcast()、sendOrderedBroadcast() 或 sendStickyBroadcast(),您可以将广播传递给其他应用。

本模块提供了构建Intent的函数(app.intent()), 启动Activity的函数app.startActivity(), 发送广播的函数app.sendBroadcast()

使用这些方法可以用来方便的调用其他应用。例如直接打开某个QQ号的个人卡片页,打开某个QQ号的聊天窗口等。

var qq = "2732014414";

app.startActivity({

    action: "android.intent.action.VIEW",

    data:"mqq://im/chat?chat_type=wpa&version=1&src_type=web&uin=" + qq,

    packageName: "com.tencent.mobileqq",

});

app.intent(options)

  • options {Object} 选项,包括:
    • action {string} 意图的Action,指意图要完成的动作,是一个字符串常量,比如"android.intent.action.SEND"。当action以"android.intent.action"开头时,可以省略前缀,直接用"SEND"代替。参见Actions
    • type {string} 意图的MimeType,表示和该意图直接相关的数据的类型,表示比如"text/plain"为纯文本类型。
    • data {string} 意图的Data,表示和该意图直接相关的数据,是一个Uri, 可以是文件路径或者Url等。例如要打开一个文件, action为"android.intent.action.VIEW", data为"file:///sdcard/1.txt"。
    • category {Array} 意图的类别。比较少用。参见Categories
    • packageName {string} 目标包名
    • className {string} 目标Activity或Service等组件的名称
    • extras {Object} 以键值对构成的这个Intent的Extras(额外信息)。提供该意图的其他信息,例如发送邮件时的邮件标题、邮件正文。参见Extras
    • flags {Array} intent的标识,字符串数组,例如["activity_new_task", "grant_read_uri_permission"]。参见Flags

[v4.1.0新增]

    • root {Boolea} 是否以root权限启动、发送该intent。使用该参数后,不能使用context.startActivity()等方法,而应该直接使用诸如app.startActivity({...})的方法。

[v4.1.0新增]

根据选项,构造一个意图Intent对象。

例如:

//打开应用来查看图片文件

var i = app.intent({

    action: "VIEW",

    type: "image/png",

    data: "file:///sdcard/1.png"

});

context.startActivity(i);

需要注意的是,除非应用专门暴露Activity出来,否则在没有root权限的情况下使用intent是无法跳转到特定Activity、应用的特定界面的。例如我们能通过Intent跳转到QQ的分享界面,是因为QQ对外暴露了分享的Activity;而在没有root权限的情况下,我们无法通过intent跳转到QQ的设置界面,因为QQ并没有暴露这个Activity。

但如果有root权限,则在intent的参数加上"root": true即可。例如使用root权限跳转到Auto.js的设置界面为:

app.startActivity({

    packageName: "org.autojs.autojs",

    className: "org.autojs.autojs.ui.settings.SettingsActivity_",

    root: true

});

另外,关于intent的参数如何获取的问题,一些intent是意外发现并且在网络中传播的(例如跳转QQ聊天窗口是因为QQ给网页提供了跳转到客服QQ的方法),如果要自己获取活动的intent的参数,可以通过例如"intent记录","隐式启动"等应用拦截内部intent或者查询暴露的intent。其中拦截内部intent需要XPosed框架,或者可以通过反编译等手段获取参数。总之,没有简单直接的方法。

更多信息,请百度安卓Intent或参考Android指南: Intent

app.startActivity(options)

  • options {Object} 选项

根据选项构造一个Intent,并启动该Activity。

app.startActivity({

    action: "SEND",

    type: "text/plain",

    data: "file:///sdcard/1.txt"

});

app.sendBroadcast(options)

  • options {Object} 选项

根据选项构造一个Intent,并发送该广播。

app.startService(options)

  • options {Object} 选项

根据选项构造一个Intent,并启动该服务。

app.sendBroadcast(name)

[v4.1.0新增]

  • name {string} 特定的广播名称,包括:
    • inspect_layout_hierarchy 布局层次分析
    • inspect_layout_bounds 布局范围

发送以上特定名称的广播可以触发Auto.js的布局分析,方便脚本调试。这些广播在Auto.js发送才有效,在打包的脚本上运行将没有任何效果。

app.sendBroadcast("inspect_layout_bounds");

app.intentToShell(options)

[v4.1.0新增]

  • options {Object} 选项

根据选项构造一个Intent,转换为对应的shell的intent命令的参数。

例如:

shell("am start " + app.intentToShell({

    packageName: "org.autojs.autojs",

    className: "org.autojs.autojs.ui.settings.SettingsActivity_"

}), true);

参见intent参数的规范

app.parseUri(uri)

[v4.1.0新增]

  • uri {string} 一个代表Uri的字符串,例如"file:///sdcard/1.txt", "https://www.autojs.org"
  • 返回 {Uri} 一个代表Uri的对象,参见android.net.Uri

解析uri字符串并返回相应的Uri对象。即使Uri格式错误,该函数也会返回一个Uri对象,但之后如果访问该对象的scheme, path等值可能因解析失败而返回null

需要注意的是,在高版本Android上,由于系统限制直接在Uri暴露文件的绝对路径,因此如果uri字符串是文件file://...,返回的Uri会是诸如content://...的形式。

app.getUriForFile(path)

[v4.1.0新增]

  • path {string} 文件路径,例如"/sdcard/1.txt"
  • 返回 {Uri} 一个指向该文件的Uri的对象,参见android.net.Uri

从一个文件路径创建一个uri对象。需要注意的是,在高版本Android上,由于系统限制直接在Uri暴露文件的绝对路径,因此返回的Uri会是诸如content://...的形式。

全局变量与全局函数

全局变量和函数在所有模块中均可使用。 但以下变量的作用域只在模块内,详见 module

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

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

sleep(n)

  • n {number} 毫秒数

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

//暂停5毫秒

sleep(5000);

currentPackage()

  • 返回 {string}

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

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

currentActivity()

  • 返回 {string}

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

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

setClip(text)

  • text {string} 文本

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

setClip("剪贴板文本");

getClip()

  • 返回 {string}

返回系统剪贴板的内容。

toast("剪贴板内容为:" + getClip());

toast(message)

  • message {string} 要显示的信息

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

注意,信息的显示是"异步"执行的,并且,不会等待信息消失程序才继续执行。如果在循环中执行该命令,可能出现脚本停止运行后仍然有不断的气泡信息出现的情况。 例如:

for(var i = 0; i < 100; i++){

  toast(i);

}

运行这段程序以后,会很快执行完成,且不断弹出消息,在任务管理中关闭所有脚本也无法停止。 要保证气泡消息才继续执行可以用:

for(var i = 0; i < 100; i++){

  toast(i);

  sleep(2000);

}

或者修改toast函数:

var _toast_ = toast;

toast = function(message){

  _toast_(message);

  sleep(2000);

}

for(var i = 0; i < 100; i++){

  toast(i);

}

toastLog(message)

  • message {string} 要显示的信息

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

waitForActivity(activity[, period = 200])

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

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

waitForPackage(package[, period = 200])

  • package 包名
  • period 轮询等待间隔(毫秒)

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

exit()

立即停止脚本运行。

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

random(min, max)

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

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

random()

  • 返回 {number}

返回在[0, 1)的随机浮点数。

requiresApi(api)

  • api Android版本号

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

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

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

平台版本: API级别

Android 7.0: 24

Android 6.0: 23

Android 5.1: 22

Android 5.0: 21

Android 4.4W: 20

Android 4.4: 19

Android 4.3: 18

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 Overview。(并没有用)

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的库,可以在Jsoup下载)

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,因此不能用于界面、对话框等的创建。

控制台—Console

Stability: 2 - Stable

控制台模块提供了一个和Web浏览器中相似的用于调试的控制台。用于输出一些调试信息、中间结果等。 console模块中的一些函数也可以直接作为全局函数使用,例如log, print等。

console.show()

显示控制台。这会显示一个控制台的悬浮窗(需要悬浮窗权限)。

console.hide()

隐藏控制台悬浮窗。

console.clear()

清空控制台。

console.log([data][, ...args])

  • data {any}
  • ...args {any}

打印到控制台,并带上换行符。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章