Repository navigation
WCX v343
WCX v343
🐛 修复:防撤回(本版重点)
- 拦截后图片 / 语音 / 视频打不开
之前只拦住「插入撤回提示」并事后还原数据库:文字能回来,但微信已经把这条消息的媒体资源判成撤回 —— 图片提示「已被清理」、语音和视频播放失败,撤回前没点开过的更是救不回来。
现在直接跳过微信的撤回处理入口(doRevokeMsg):微信不认为发生过撤回,媒体按正常消息下载与播放,无论撤回前有没有点开过,什么时候点都能看 / 能播。 - 拦截后「已撤回」标记消失
跳过微信处理后连标记一起没有,现由模块按msgSvrId反查原消息自行标记,徽标(变淡 + 文本 / 图标)与旧版系统提示都恢复正常。 - 旧版样式给自己撤回也插「已阻止」提示
微信会先把原消息改写成系统提示,连isSend都变成 0,按数据库判断永远判成「对方撤回」。改用三路判定(撤回文案replacemsg/ 数据库内容 /isSend),并给提示按 msgId 去重 —— 同一条撤回只插一次。 - 撤回目标消息识别
改用 revokemsg XML 里的<newmsgid>,修正偶发「标记到错误消息」。 - 撤回入口定位加
allowFailure:个别设备上定位失败只退回原来的双层拦截,不会影响其它功能。
🐛 修复:开启「屏蔽铃声」后微信卡死 / 闪退
崩溃日志指向 ClassCastException: Return value's type from hook callback does not match the hooked method:
- hook 里对 void 方法写了
result = true/false,libxposed 校验返回值类型后直接抛异常(一进首页 resume 就崩) - 呼出 / 呼入两个开关默认就是开的,用户无感知就吃到了这个 hook → 现改为默认关闭
- 去掉
name = "playSound"的宽匹配兜底(命中面太广,会误伤其它音频播放) - 修复
val scene = "scene"常量判断 bug(这条路径此前从未真正生效) - 所有 hook 增加返回类型校验(
canSkip),非 void 方法不再跳过
✨ 新增:联系人资料页「添加时间」
- 显示格式:
2023-03-02(1332天),天数每次进资料页按当天日期重算(今天 100 天、明天 101 天) - 微信没记录该信息时,按与该好友最早一条聊天记录估算,并标注「按最早聊天记录」
- 当前微信版本没有这个字段 →
当前微信版本不支持查询 - 对方还不是好友 →
该好友未添加,无法查看添加时间 - 位置在资料页的自定义区域(与「获取实名尾字」等同一区域,排在最前),不修改微信原生布局
✨ 改进:悬浮标题栏
- 布局改为下拉选择「一体式 / 分段式」(参照上游 WeKit 的 INTEGRATED / SEPARATED)
- 老配置自动兼容:之前开过三段式的,升级后仍是分段式;切换时同步写旧键,回退旧版本不会错位
安装包:app-standard-arm64-v8a-release.apk 适配绝大多数机型;老框架选 legacy,32 位机型选 armeabi-v7a。