/**
- 再次修复分号错误的 Hamibot 刷新脚本
- 特别注意了对象定义后的分号和语句结束
*/
// 配置项 - 确保对象定义后有分号
const config = {
// 刷新方法: "intent" | "activity" | "input" | "shell"
refreshMethod: "intent", // 注意:对象属性之间使用逗号
// Intent刷新配置
intentConfig: {
// 目标应用包名
packageName: "com.tencent.mm", // 以微信为例
// 目标Activity名称(可选)
activityName: "",
// 附加参数(可选)
extras: {},
// 等待时间(毫秒)
waitTime: 3000
},
// Activity刷新配置
activityConfig: {
// 目标Activity类名
activityClass: "com.tencent.mm.ui.LauncherUI", // 微信主界面
// 清除任务标志
clearTask: true,
// 等待时间(毫秒)
waitTime: 3000
},
// 输入事件刷新配置
inputConfig: {
// 模拟按键: "home" | "back" | "menu" | "search" | "app_switch"
key: "back",
// 连续按键次数
count: 2,
// 按键间隔时间(毫秒)
interval: 300,
// 刷新后返回原应用
returnToApp: true,
// 等待时间(毫秒)
waitTime: 2000
},
// Shell命令刷新配置
shellConfig: {
// 要执行的shell命令
command: "am force-stop com.tencent.mm && am start -n com.tencent.mm/.ui.LauncherUI",
// 是否以root权限执行
root: false,
// 等待时间(毫秒)
waitTime: 5000
},
// 调试模式
debugMode: true
}; // 注意:对象定义结束后有分号
/**
- 日志函数
*/
function log(message) {
if (config.debugMode) {
console.log([页面刷新] ${message}
);
toast(message);
}
}
/**
- 等待函数
*/
function wait(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
/**
-
方法1: 使用Intent启动应用实现刷新
*/
async function refreshByIntent() {
log("尝试使用Intent启动应用实现刷新...");// 第86行代码 - 确保它前面的代码正确结束
const { packageName, activityName, extras, waitTime } = config.intentConfig;try {
// 保存当前应用包名
const currentPackage = currentPackage();// 构建Intent const intent = { action: "android.intent.action.MAIN", packageName: packageName }; // 如果指定了Activity名称,添加到Intent if (activityName) { intent.className = activityName; } // 添加额外参数 if (extras && Object.keys(extras).length > 0) { intent.extras = extras; } log(`发送Intent: ${JSON.stringify(intent)}`); // 发送Intent启动应用 app.startActivity(intent); // 等待应用启动 await wait(waitTime); log("Intent启动应用完成!"); return true;
} catch (e) {
log(Intent启动应用过程中出错: ${e.message}
);
return false;
}
}
/**
-
方法2: 使用ActivityManager启动Activity实现刷新
*/
async function refreshByActivity() {
log("尝试使用ActivityManager启动Activity实现刷新...");const { activityClass, clearTask, waitTime } = config.activityConfig;
try {
// 使用Java反射获取ActivityManager
const activityManager = context.getSystemService(android.content.Context.ACTIVITY_SERVICE);// 构建Intent const intent = new android.content.Intent(); intent.setClassName(context.getPackageName(), activityClass); // 设置标志 intent.addFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK); // 如果需要清除任务
这份代码为什么一直报错 86行语句前缺失";"
回答
代码报错的原因是第86行 const { packageName, activityName, extras, waitTime } = config.intentConfig;
语句前的分号缺失问题。这通常是由于前面的代码块没有正确结束导致的。
以下是修复建议:
// 文档地址 https://docs.hamibot.com/
/**
* 再次修复分号错误的 Hamibot 刷新脚本
*/
// 配置项 - 确保对象定义后有分号
const config = {
// 原有配置保持不变
refreshMethod: "intent",
intentConfig: {
packageName: "com.tencent.mm",
activityName: "",
extras: {},
waitTime: 3000
}
// 其他配置...
};
/**
* 方法1: 使用Intent启动应用实现刷新
*/
function refreshByIntent() {
console.log("尝试使用Intent启动应用实现刷新...");
// 修复分号问题
var intentConfig = config.intentConfig;
var packageName = intentConfig.packageName;
var activityName = intentConfig.activityName;
var extras = intentConfig.extras;
var waitTime = intentConfig.waitTime;
try {
// 原有逻辑不变
var intent = {
action: "android.intent.action.MAIN",
packageName: packageName
};
if (activityName) {
intent.className = activityName;
}
app.startActivity(intent);
sleep(waitTime);
return true;
} catch (e) {
console.log("Intent启动应用过程中出错: " + e);
return false;
}
}
// 其他方法保持不变...
hamibot.exit();
主要修改点:
- 使用传统的
var
变量声明替代解构赋值,因为Rhino引擎对ES6支持不完全 - 确保每个语句都以分号结束
- 使用
sleep()
替代await wait()
,因为Hamibot脚本环境更适合同步写法
建议检查整个脚本中所有语句是否都有正确的分号结束,特别是对象定义、函数声明等代码块后面。