termux(command [,options])

前情提要

安装 termux(版本需 0.95 以上)

编辑 ~/.termux/termux.properties 文件, 将 allow-external-apps=true 前面的注释 # 去掉, 保存退出

1# termux 安装 adb 工具
2pkg update
3pkg install android-tools

adb 连接手机后授予 termux 权限, autoxjs 或者打包后的应用

(如果有)比如小米:手机需要开启 USB 调试(安全设置) - 可在开发者选项里找到

(如果有)比如 oppo:手机需要开启 禁止权限监控 - 可在开发者选项里找到

1adb shell pm grant 包名 com.termux.permission.RUN_COMMAND
1// 输出字符串到文件
2termux("echo 'hello world' > /sdcard/termuxRunResult.autox");
3
4// 获取执行结果
5termux("ls /sdcard/", {
6    outputPath: "/sdcard/termux_output.txt",
7    callback: (result) => {
8        log("输出结果:\n" + result);
9        toast(result);
10    },
11    runBackground: false, // 需要打开 termux 的悬浮窗、后台弹出界面权限
12    sessionAction: 0, //指定 会话动作
13    clean: false, // 执行完后清理输出文件
14    top: true, // 不创建新的活动
15    checkGap: 100, // 检查间隔时间,单位毫秒
16    checkCount: 600, // 检查次数
17});

sendTermuxIntent(intent)

  • intent Intent 意图
  • return void

发送 Intent 到 Termux

1// 自己构建 intent
2function getTermuxIntent(command, runBackground, sessionAction, top) {
3    let intent = new Intent();
4    let args = stringArray("-c", command);
5    intent.setClassName("com.termux", "com.termux.app.RunCommandService");
6    intent.setAction("com.termux.RUN_COMMAND");
7    intent.putExtra("com.termux.RUN_COMMAND_PATH", "/data/data/com.termux/files/usr/bin/bash");
8    intent.putExtra("com.termux.RUN_COMMAND_ARGUMENTS", args);
9    intent.putExtra("com.termux.RUN_COMMAND_WORKDIR", "/data/data/com.termux/files/home");
10    intent.putExtra("com.termux.RUN_COMMAND_BACKGROUND", runBackground);
11    intent.putExtra("com.termux.RUN_COMMAND_SESSION_ACTION", sessionAction);
12    if (top) {
13        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
14    }
15    return intent;
16}
17let myIntent = getTermuxIntent("echo 'termux 运行成功' > " + files.cwd() + "/termuxRunResult.autox", true, 0, true);
18// 发送 intent 执行 Termux 命令
19sendTermuxIntent(myIntent);