auto js如何使用shizuku
时间: 2024-06-09 18:05:04 浏览: 324
Shizuku 是一个 Android 上的 Root 权限管理工具,可以让用户以非特权用户身份运行需要 Root 权限的应用程序。在 Auto.js 中使用 Shizuku 可以让你的脚本获得 Root 权限,从而执行一些需要 Root 权限才能完成的操作。
以下是在 Auto.js 中使用 Shizuku 的步骤:
1. 在手机上安装 Shizuku。你可以从官方网站(https://shizuku.rikka.app/)下载 APK 文件并安装。
2. 在你的脚本中导入 shizuku 模块。你可以使用以下代码:
```javascript
var shizuku = storages.create("shizuku");
var suProcess = null;
var suOutputStream = null;
var suInputStream = null;
if (!shizuku.contains("service")) {
shizuku.put("service", "shizuku");
}
if (!shizuku.contains("package")) {
shizuku.put("package", "moe.shizuku.privileged.api");
}
if (!shizuku.contains("version")) {
shizuku.put("version", 3);
}
var serviceIntent = new Intent();
serviceIntent.setComponent(new ComponentName(shizuku.get("package"), "moe.shizuku.api.ShizukuApiService"));
serviceIntent.putExtra("version", shizuku.get("version"));
context.startService(serviceIntent);
while (!context.getSystemService("statusbar").expandNotificationsPanel()) {
sleep(100);
}
var shizukuApi = null;
while (shizukuApi == null) {
shizukuApi = Java.use("moe.shizuku.api.ShizukuApi").getInstance();
sleep(100);
}
var suExecutor = shizukuApi.newProcessBuilder().command(["su"]).start();
suProcess = suExecutor.process();
suOutputStream = suProcess.getOutputStream();
suInputStream = suProcess.getInputStream();
function executeCommand(command) {
suOutputStream.write(command.concat("\n").getBytes());
suOutputStream.flush();
var bufferedReader = new BufferedReader(new InputStreamReader(suInputStream));
var output = "";
while (true) {
var line = bufferedReader.readLine();
if (line == null) {
break;
}
output += line + "\n";
}
return output;
}
```
3. 在你的脚本中使用 `executeCommand` 函数来执行需要 Root 权限的命令。例如,以下代码可以让你获取 /data/data/com.example.app 目录下的所有文件列表:
```javascript
var result = executeCommand("ls /data/data/com.example.app");
toastLog(result);
```
请注意,使用 Shizuku 需要你的手机已经获取了 Root 权限。此外,使用 Shizuku 执行命令的速度可能比直接在终端中执行要慢一些。
阅读全文