我想集成一个新功能,需要调用js,可以通过调用其他网站的js集成到hamibot运行吗?有什么方法?有例子吗?REST API 可以用不?

已存档
crv3yukjc8 · 29 天前
第 1 条补充
·
28 天前

http://123/com/1.js 这样的js,如何调用运行? 在1.js要不要有特别的写法?

第 2 条补充
·
26 天前

hamibot有没有这种调用方法?
runtime.loadDex('fishhid.apk')
importClass(com.fishhidpro.hid.HidBridge);

远程下载的文件,是否能指定存储目录?

回答

Hamibot AI
1
· 29 天前

是的,你可以通过 REST API 集成外部 JavaScript 功能到 Hamibot 中运行。具体方法如下:

调用外部网站 JS 的方法:

  1. 使用 http.get()http.request() 获取外部 JS 文件内容
  2. 通过 eval() 函数执行获取到的 JS 代码(注意安全性风险)
  3. 或者将代码保存为本地文件再用 require() 导入

REST API 使用示例:
你可以通过 Hamibot 的 API 触发脚本执行。例如,用以下代码通过 API 运行指定脚本:

// 文档地址 https://docs.hamibot.com/
http.request('https://api.hamibot.com/v1/scripts/脚本_id/run', {
  method: 'POST',
  contentType: 'application/json',
  headers: {
    authorization: '你的令牌(hmp 开头)',
  },
  body: JSON.stringify({
    devices: [{ _id: '设备ID', name: '设备名' }],
  }),
});

注意事项:

  • 确保你有权限访问目标 JS 资源(避免跨域问题)
  • 评估执行外部代码的安全风险
  • API 调用需要有效的个人访问令牌(hmp 开头)

如果你需要更具体的集成示例,请提供你想调用的外部 JS 功能的具体信息。


补充回答 1

在Hamibot中运行远程JS文件,你需要先下载该文件到本地存储,然后使用engines.execScriptFile()执行。1.js不需要特殊写法,但要注意JavaScript兼容性。

具体步骤如下:

// 文档地址 https://docs.hamibot.com/

// 下载远程JS文件到本地
var url = "http://123/com/1.js";
var savePath = "/sdcard/script.js";

// 使用http.get获取文件内容
var res = http.get(url);
if (res.statusCode == 200) {
    // 将文件内容写入本地
    files.writeBytes(savePath, res.body.bytes());
    
    // 执行下载的脚本文件
    engines.execScriptFile(savePath);
} else {
    toast("下载失败,状态码: " + res.statusCode);
}

关于1.js的写法:

  • 不需要特殊的前缀或后缀
  • 使用标准的JavaScript语法
  • 避免使用ES6+特性(箭头函数、let/const、模板字符串等)
  • 可以使用Hamibot提供的API(如auto、device、app等)

如果你需要定期从远程更新并执行脚本,可以结合定时任务来实现自动化更新。


补充回答 2

Hamibot 目前不支持 runtime.loadDex() 方法,无法直接加载外部的 APK 文件作为 Dex 库并使用 importClass 导入类。

关于远程下载文件,Hamibot 提供了 downloadManager.download() 方法,可以指定存储目录。具体用法如下:

// 文档地址 https://docs.hamibot.com/
var url = 'https://example.com/file.txt';
var dirPath = '/sdcard/Download/'; // 指定存储目录
var fileName = 'myfile.txt'; // 指定文件名

var result = downloadManager.download(url, dirPath, fileName);
if (result) {
    toast('下载成功');
} else {
    toast('下载失败');
}

注意:dirPath 参数需要传入有效的目录路径,且应用需要有该目录的写入权限。

如果你需要实现 HID 相关功能,建议查看 Hamibot 官方文档中是否提供了相关的内置模块或 API。

ℹ️ 本回答由 AI 生成,内容仅供参考