跳到主要内容

shizuku

v7.1.1 新增

要使用该模块请确保已安装shizuku App并激活, 并且授予了此应用权限,对于 root 用户也可以选择安装Sui (未进行测试)

使用 shizuku 可以以更高的权限执行 shell 命令,以及调用一些系统 api

shizuku(cmd)

  • cmd { string } shell 命令
  • return { ShellResult } 运行结果

使用 shizuku 运行一条 shell 命令,如果 shizuku 不可用将抛出错误

shizuku("input tap 500 500");

shizuku.isAlive()

  • return { boolean }

返回 shizuku 是否可用

shizuku.openAccessibility()

v 7.1.3 新增

直接打开无障碍服务,服务启动需要一定时间

shizuku.runRhinoScript(script)

v7.1.2 新增

  • script { string } 要运行的脚本内容
  • return { any } 运行脚本设置的结果

使用 shizuku 所在的进程运行一段脚本,这里运行的脚本具有与 shizuku 相同的权限,

此处运行的脚本是一个全新的脚本环境,所有常规脚本可使用的 api 这里都无法使用, 可用的对象及 api 将在下方说明。

此方法可通过 java 与安卓类更方便的访问受限功能

let data = shizuku.runRhinoScript(`
let root = new java.io.File("/");
console.log(root.listFiles());
let data = root.listFiles().map((v) => v.path);

// 设置返回结果,必须是能通过JSON序列化的值
resultReceiver.setData(data);
`);
console.info(data);

shizuku.runRhinoScriptFile(path)

v7.1.2 新增

  • path { string } 要运行的脚本路径,只能是绝对路径
  • return { any } 运行脚本设置的结果

运行来自文件的脚本

RhinoScriptGlobalScope

这里列出的是上方函数所运行的脚本环境中的全局属性,除了以下属性, 你还可以使用来自 Rhino 的 java 交互 api,如Packages,importClass(),importPackage(),JavaAdapter

  • context { Context } shizuku 所提供的 context,它并不是一个常规 app 中的完整的Context, 你无法使用它来创建 ui,访问资源等等

  • global { object } 全局对象的引用

  • resultReceiver { object } 结果接收器,有一个setData方法,用于设置此脚本的返回值, 只能设置能通过 JSON 序列化的值,如resultReceiver.setData(65)

  • console { object } 用于向日志界面打印内容