如何获取hamibot的包号和版本号?

测试脚本 · 5 天前
第 1 条补充
·
5 天前

那如何获取其它app的包名

第 2 条补充
·
4 天前

如何获取脚本当前版本,和最新版本,,是否有更新。

回答

Hamibot AI
1
· 5 天前

要获取 Hamibot 的包名和版本号,可以使用 app 模块的相关属性。

获取包名 (Package Name):
Hamibot 的包名是固定的,为 "com.hamibot.hamibot"

获取版本号 (Version Name) 和版本代码 (Version Code):
可以通过 app.hamibot 对象的属性来获取:

  • app.hamibot.versionName: 返回版本名称字符串,例如 "1.4.3"
  • app.hamibot.versionCode: 返回版本代码整数,例如 100

以下是一个示例脚本:

// 文档地址 https://docs.hamibot.com/
toastLog('Hamibot 包名: ' + 'com.hamibot.hamibot');
toastLog('Hamibot 版本名称: ' + app.hamibot.versionName);
toastLog('Hamibot 版本代码: ' + app.hamibot.versionCode);

运行这段脚本后,屏幕上会以 Toast 提示的形式显示 Hamibot 的包名、版本名称和版本代码。


补充回答 1

获取其他应用的包名有几种常用方法,你可以根据具体场景选择:

方法一:使用 getPackageName(appName) 函数(推荐)

这个函数可以根据应用的显示名称(即你在应用列表中看到的名字)来获取其包名。

// 文档地址 https://docs.hamibot.com/
// 获取微信的包名
var wechatPackageName = getPackageName('微信');
toastLog('微信包名: ' + wechatPackageName); // 输出: com.tencent.mm

// 获取QQ的包名
var qqPackageName = getPackageName('QQ');
toastLog('QQ包名: ' + qqPackageName); // 输出: com.tencent.mobileqq

// 如果应用名称不准确或存在多个,可能返回null或其中一个
var name = getPackageName('浏览器');
if (name) {
    toastLog('浏览器包名: ' + name);
} else {
    toastLog('未找到该应用');
}

方法二:使用 app.getInstalledPackages() 函数

这个函数可以获取所有已安装应用的包信息列表,你可以遍历这个列表来查找特定应用。

// 文档地址 https://docs.hamibot.com/
// 获取所有已安装应用的包信息
var packages = app.getInstalledPackages();

// 遍历查找包含特定名称的应用
var targetAppName = '微信';
for (var i = 0; i < packages.length; i++) {
    var pkg = packages[i];
    // 获取该包名对应的应用名称
    var appName = getAppName(pkg.packageName);
    if (appName && appName.indexOf(targetAppName) !== -1) {
        toastLog('找到应用: ' + appName + ', 包名: ' + pkg.packageName);
        break;
    }
}

方法三:使用 app.getInstalledApps() 函数(Hamibot 1.4.0+)

这个函数返回更详细的应用信息,包括应用名称和包名。

// 文档地址 https://docs.hamibot.com/
// 获取所有已安装应用的信息
var apps = app.getInstalledApps();

// 遍历查找
var targetAppName = '支付宝';
for (var i = 0; i < apps.length; i++) {
    var appInfo = apps[i];
    if (appInfo.name && appInfo.name.indexOf(targetAppName) !== -1) {
        toastLog('找到应用: ' + appInfo.name + ', 包名: ' + appInfo.packageName);
        break;
    }
}

方法四:使用 app.getPackageInfo(packageName) 函数(Hamibot 1.4.0+)

如果你已经知道大概的包名,可以用这个函数验证并获取详细信息。

// 文档地址 https://docs.hamibot.com/
// 尝试获取微信的包信息
try {
    var info = app.getPackageInfo('com.tencent.mm');
    toastLog('应用名称: ' + info.applicationInfo.name);
    toastLog('包名: ' + info.packageName);
    toastLog('版本名称: ' + info.versionName);
    toastLog('版本代码: ' + info.versionCode);
} catch (e) {
    toastLog('应用未安装或包名错误');
}

注意事项:

  1. 应用名称匹配getPackageName(appName) 函数对应用名称的匹配是精确的,但也支持部分匹配。如果系统中有多个名称相似的应用,它可能返回其中一个。
  2. 权限:这些函数通常不需要特殊权限即可使用。
  3. 效率:方法一最直接高效;方法二和方法三需要遍历所有应用,适合批量处理或查找不确定名称的应用。

对于自动化脚本,最常用的是 getPackageName(appName) 函数,因为它简单直接。


补充回答 2

要获取脚本的当前版本、最新版本并判断是否有更新,你可以通过 Hamibot API 来实现。

获取脚本当前版本和最新版本

脚本的“当前版本”指的是你本地开发或已部署的脚本版本,通常存储在脚本文件的元数据中(例如 version 字段)。你可以通过读取脚本文件或使用 files.read 来解析。

脚本的“最新版本”指的是在 Hamibot 云端脚本库中该脚本发布的最新版本,需要通过 API 查询。

以下是实现步骤:

  1. 获取脚本的当前版本:这通常需要你自行在脚本中定义和管理。一个常见的做法是在脚本开头用 var version = "1.0.0"; 这样的变量来声明。
  2. 获取脚本的最新版本:使用 Hamibot API 查询指定脚本的信息,其返回的 JSON 数据中包含 version 字段,即为该脚本在云端的最新版本。
  3. 比较版本判断更新:将本地版本号与云端版本号进行字符串比较(或按语义化版本规则解析后比较),即可判断是否有更新。

示例代码

下面的代码演示了如何通过 API 获取脚本信息,并与本地版本进行比较。

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

// 请替换为你的实际值
var scriptId = "你的脚本_id"; // 脚本在云端的ID
var authToken = "你的令牌(hmp 开头)";
var localVersion = "1.0.0"; // 这是你本地脚本的当前版本,请自行修改

// 构建API请求
var url = "https://api.hamibot.com/v1/scripts/" + scriptId;
var res = http.get(url, {
    headers: {
        "Authorization": authToken
    }
});

if (res.statusCode == 200) {
    var data = res.body.json();
    var latestVersion = data.version; // 从API响应中获取最新版本号
    log("本地脚本版本: " + localVersion);
    log("云端最新版本: " + latestVersion);
    
    // 简单的字符串比较(适用于格式规整的版本号,如 x.x.x)
    if (localVersion == latestVersion) {
        log("当前已是最新版本。");
    } else {
        log("发现新版本!");
        // 这里可以添加更新提示或自动更新逻辑
    }
} else {
    log("获取脚本信息失败,状态码: " + res.statusCode);
    log("响应内容: " + res.body.string());
}

关键点说明

  • 脚本 ID (scriptId):你需要替换为你要查询的脚本在 Hamibot 云端的 _id。你可以在脚本编辑页面的 URL 或通过“获取脚本列表”的 API 找到它。
  • 授权令牌 (authToken):需要替换为你自己的 Hamibot 令牌(以 hmp_ 开头)。你可以在 Hamibot 网页版个人设置中生成。
  • 本地版本管理:示例中的 localVersion 变量需要你根据实际情况设置。更规范的做法是将其定义在脚本文件的特定位置(如开头注释或配置对象中),并通过代码读取。
  • 版本比较:示例使用了简单的字符串相等比较。对于复杂的语义化版本(如 1.2.3-beta),你可能需要编写更复杂的解析比较函数。

扩展建议

  • 你可以将此检查逻辑封装成一个函数,在脚本启动时调用,以实现更新提示功能。
  • 如果需要自动更新,流程会复杂一些,通常涉及下载新版本脚本文件并替换本地文件,这需要文件操作权限和谨慎的逻辑处理。

如果你需要关于自动更新脚本或更复杂的版本比较逻辑的指导,可以进一步提问。

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