Ding

钉住消息和隐私

面向钉钉的第三方 Xposed 模块 · libxposed API 102 · Material Design 3

反馈问题 · Telegram 群组

功能

功能 说明
消息防撤回 尝试保留本机已经收到、仍可读取的他人普通聊天消息,并在气泡下方显示撤回标签。
禁止已读上报 拦截本机普通聊天的已读回执,同时更新本地阅读状态。
隐藏输入状态 拦截本机发送的“正在输入”状态,正常文字发送照常。
关键词提醒 单聊、群聊等普通会话的实时及离线补收未读新消息命中关键词时提醒,可选“发送者+命中关键词”或正常消息通知;排除历史拉取和重复提醒,身份可识别时忽略本人消息。
关键词高级设置 支持会话范围、免打扰时段及 RE2/J 安全正则;旧正则需确认迁移后生效。
自动回复 支持默认内容或按 AA-BB 规则匹配回复;同会话间隔可拖动设置为0~30分钟。账号和登录代次变化会取消未提交任务。
配置备份 通过系统文件选择器导出/导入配置;支持旧版备份迁移,保存后读取框架值确认结果。
发送前确认 超过阈值(默认 20 字,可调)或带附件的消息发送前弹窗确认;点「取消」时输入框中的文字与插入的图片原样保留,可直接继续编辑或再次发送。
右滑回复 补启钉钉 9.0.5 被服务端关闭的原生气泡引用回复手势链,从左往右滑消息直接进入原生引用回复;默认关闭。
禁止 DING 自动确认 拦截聊天卡片、详情页与顶部悬浮卡片的自动确认,并在悬浮卡片上注入手动「确认」按钮,确认时机完全由用户掌控;默认关闭。
拦截播放与点击上报 语音、图片、视频和普通网页链接不再向服务端上报“已播放/已点击”,本机界面状态保持正常;默认关闭。
原图发送偏好 普通聊天选择照片时,可默认勾选原图,或按账号记住上次原图选择;默认关闭,每次仍可手动更改。
语音转发 长按语音消息出现「转发」,走钉钉原生选会话流程,由模块重建真实语音发送(原生管道会把语音降级为文本);默认关闭,语音未缓存时可能失败。仅支持单条长按转发,多选逐条转发暂不支持。
跳过开屏广告 直接关闭启动时的广告开屏页(含视频开屏)。
平板模式 模拟平板登录,尝试让两台手机同时登录同一钉钉账号;默认关闭,开启后需重启并重新登录。
兼容性明细 设置页展示已安装的钉钉版本与 Android 适配范围,版本不匹配时提示。
独立开关 各功能分别设置;保存后重启钉钉生效。
撤回记录管理 查看当前账号记录数和模块数据库总占用;手动清理或选择永久/30 天/90 天保留,默认永久。

禁止已读上报针对普通聊天,不覆盖 DING、审批、文档查看等独立业务状态;其他设备产生的回执仍会生效。

兼容性

项目 当前适配目标
Android Android 13~17(API 33~37)
钉钉 9.0.5,versionCode 1280(已验证;其他版本会在设置页标注“不在适配范围”)
框架 支持 libxposed API 102 的 LSPosed 框架;免ROOT框架 NPatch / FPA 亦可加载

上述范围是适配目标,不代表已完成所有设备、系统和聊天场景的验证。

安装与使用

  1. 从 Releases 获取已发布的 APK 并安装。
  2. 在 LSPosed 中启用 Ding,勾选 钉钉 作用域。
  3. 打开 Ding,确认框架连接状态,按需要设置功能开关。
  4. 强行停止钉钉,再重新打开,使模块和新设置生效。

免ROOT(NPatch / FPA)用户请参见下方免ROOT框架章节。

更新模块或修改开关后同样需要重启钉钉。设置页的框架连接状态不等于聊天功能已经生效,建议先用测试账号验证。

当前兼容性卡展示已安装的钉钉版本和 Android 适配范围;框架卡展示连接与作用域状态。这些信息不能代替实际 Hook 加载结果。更新模块或保存设置后,应强行停止钉钉再重新打开;运行错误可通过模块日志和内部控制通道排查。

关键词提醒需要钉钉的系统通知及对应通知渠道开启。临时投递错误会有限重试;身份暂不可识别时采用会话内去重。正常发送确认仍在无法显示窗口时自动放行;确认期间账号、目标或内容发生变化时,该过期请求会取消并提示重新发送。

关键词可以用中文逗号 ,、英文逗号 , 或换行分隔。点击关键词卡片可选择提醒方式:“关键词提示”显示“发送者-消息触发关键词:关键词”;“消息通知”显示发送者和消息内容,并可点击进入对应会话。修改后强行停止钉钉并重新打开,使新设置生效。

关键词铃声保留默认铃声、静音和自选系统铃声。点击“浏览”打开系统铃声选择器,页面显示铃声名称,点击保存并经框架读回确认后生效;取消选择或退出未保存不会修改配置。不提供手填 URI、本地音频浏览或应用内振动设置,也不会修改手机的系统默认铃声。振动由系统通知设置控制;旧备份的振动字段兼容忽略。

安全正则与配置备份

正则使用 RE2/J 1.8,一行一条,最多 50 条、每条 100 字;普通关键词继续使用原有逗号、分号和换行分隔。正则按精确文本去重,\S 与 \s、含逗号的量词不会被合并或拆分。匹配在有界后台队列执行,不在宿主消息插入线程运行;过载时该次提醒可能被跳过并记录错误。

安全正则不支持前后查找、反向引用、字符类交集和嵌套有界重复,并限制分组深度、编译展开及匹配文本长度。\w、\d、\s 和单词边界采用 RE2/J 的 ASCII 规则,Unicode 大小写行为也可能与旧引擎不同。所有旧引擎正则会先暂停、保留原文;在关键词或高级设置中阅读说明、勾选确认并保存,通过校验后才生效。不兼容条目会列出原因,不会退回旧正则引擎。

备份输出格式为 v2,兼容读取 v1。旧规则列表仅按旧分词规则迁移一次;不会猜测拼回旧版本已经拆坏的表达式。旧正则随备份恢复后仍处于待确认状态,其他合法配置正常恢复。导入上限为 1 MiB,未知字段、重复字段、非法值、损坏 JSON 和尾随垃圾会拒绝;空字符串可以恢复无关键词和默认铃声。导入成功以框架权威读回为准,取消已提交操作不代表回滚。

自动回复边界

自动回复只处理可确认账号的实时新消息,不处理历史拉取、离线补收和重连批次。默认回复模式继续使用关键词、非工作时间、所有新消息等触发条件(任意命中),时间段使用手机时区;匹配回复模式只使用用户维护的规则,固定模式的内容会折叠并保留。

匹配规则一行一条,格式 AA-BB:消息包含 AA 时回复 BB,忽略触发词大小写。按第一个半角减号分隔,回复允许包含减号;最多50条,触发词100字、回复200字,重复触发词会拒绝保存。多条同时命中时只使用最上面一条,规则模式不会因固定模式的“所有新消息”等开关而回复未命中的消息。

同一会话回复间隔可拖动设置为0~30分钟,旧配置默认5分钟。0表示取消时间间隔限制,每条符合模式和范围的新消息均可回复;本人、历史、重复消息及回复回显保护仍然保留。会话范围对两种模式共用。群聊 @ 范围需要 SDK 确认提及当前账号,且完整正文含当前昵称;纯文本伪 @、转发和仅 @ 全员不触发。

登录、退出、被踢下线以及发送前身份变化会取消未提交任务;真正发送使用当前账号的会话和宿主消息工厂。保护范围到模块交给原生 SDK 的边界,SDK 接管后的网络发送不能由模块事务撤销。

原图发送偏好

在设置页开启「原图发送偏好」,点击卡片选择模式:

  • 默认原图:每次从普通聊天打开照片选择器时,默认勾选“原图”;本次仍可手动取消。
  • 记住上次选择:使用当前钉钉账号上次在选图器确认提交图片时的“原图”选项;第一次没有记录时默认不勾选。取消选图、空结果、仅视频和选图期间切换账号不会更新记忆。

模块仅调整选择器初始选项,不修改照片或强制改变最终发送质量。记忆在选图结果有效返回时保存,不以图片最终上传成功为条件;之后取消发送确认不会撤销这次选图偏好。

功能默认关闭,关闭时使用钉钉原有行为。保存模块设置后需强行停止钉钉并重新打开;日常选图产生的记忆无需重启。只记录按账号隔离的原图布尔选项,不记录图片内容或路径;清除钉钉应用数据也会清除记忆。当前适配普通聊天的新旧选图入口,文件助手、头像、独立拍摄和转发入口不在本功能范围。

钉钉相册的“原图”是原生共享选项:同一相册内选择视频时,也会按钉钉原生规则影响视频清晰度,实际行为取决于宿主支持情况。仅视频选择不会更新模块记忆;包含照片的混合选择会记住该次选项。

平板模式

只在其中一台手机开启「平板模式」,让该手机以平板身份登录,另一台保持普通手机模式。设置页点击卡片可查看使用方法。

保存后,强行停止钉钉并重新打开,再重新登录同一账号。已有登录会话不会自动切换身份;关闭平板模式后也需重启并重新登录,以恢复手机身份。

本功能默认关闭,当前适配钉钉 9.0.5(1280)。双设备能否同时在线取决于钉钉服务端的账号与设备限制;本说明不代表已经完成两台手机同时登录的实测。

隐藏桌面图标

设置页提供「隐藏桌面图标」开关,开启后可隐藏桌面图标,模块功能不受影响。之后回到设置页的方式:

  • 打开 LSPosed → 模块 → 长按 Ding → 打开;
  • 或连接电脑执行 adb shell am start -n io.github.comewhy.ding/.MainActivity;
  • 免ROOT框架用户可从框架管理器的模块列表直接打开。

在设置页关闭该开关即可恢复图标。覆盖安装更新会保留隐藏状态;全新安装默认显示图标。

若隐藏后桌面仍显示 Ding 图标,请关闭 LSPosed → 设置 →“强制显示桌面图标”,然后重新切换隐藏开关。

撤回标签

标签独立显示在消息气泡下方,不拼接到原消息正文中。

标签 含义
已被撤回 · 本机已保留 原文本或完整本地附件已确认可用。
已被撤回 · 撤回时已保留 撤回时已确认本机保留,但现在无法重新验证(原内容不可访问)。
已被撤回 · 仅保留预览 图片只有本地预览,无法确认完整原图。
已被撤回 · 附件未缓存 图片或语音的本地附件无法确认可用。
已被撤回 混合富文本仅确认撤回事件,不宣称其全部附件已保留。
  • 防撤回无法恢复模块运行前已经被清除的正文。
  • 模块不额外下载或永久备份附件;缓存被清理后,附件可能无法显示。
  • 关闭防撤回并重启钉钉后,历史标签暂时隐藏;再次开启后恢复。
  • 撤回元数据按账号、会话及消息 ID 隔离,保存在钉钉的专用私有数据库中。清除钉钉应用数据会清除这些记录。
  • 标签统一使用“已被撤回”,不据此推断撤回执行者;群管理员也可能撤回消息。

撤回记录管理

管理操作需钉钉主进程运行、账号可识别。统计中的记录数量属于当前账号,数据库总占用包含其他账号及可复用空间。

默认永久保留。选择 30 天或 90 天时,确认后按首次观察时间清理当前账号的过期记录;手动清理也只作用于当前账号的模块元数据。清理不会删除原聊天消息或附件,但相应历史撤回标签无法恢复。删除记录后数据库文件未立即缩小属于正常空间复用。

数据升级至 v3 时保留历史记录及旧字段。回滚构建应保留 v3 兼容的存储层,避免旧存储实现拒绝读取升级后的数据库。

免ROOT框架

Ding 支持通过免ROOT框架(NPatch、FPA)加载运行,无需 root 和 LSPosed。

除上述两个框架外,使用其他免ROOT框架时需自行测试是否兼容——模块基于标准 libxposed API 102,理论上可被任何支持该 API 的框架加载,但未经验证。

两种加载模式

模式 说明 设置页
远程加载(推荐) Ding 模块 APK 单独安装到手机;框架修补钉钉时从已安装的模块 APK 路径加载代码,模块与框架通过 XposedService 通信 桌面有 Ding 图标,点开即设置页,功能开关正常保存
嵌入模式(仅 NPatch) 模块代码在修补时打包进钉钉 APK 内部(assets/npatch/modules/),桌面无独立 Ding 图标 设置页无法从桌面打开,也无法查看或更改功能开关;需自定义设置请改用远程加载模式

嵌入模式默认行为

嵌入模式下没有设置页,模块自动启用以下三个功能,其余全部关闭:

  • 消息防撤回 ✅
  • 禁止已读上报 ✅
  • 隐藏输入状态 ✅

关键词提醒、自动回复、语音转发等高级功能在嵌入模式下不可用。如需启用这些功能,请改用远程加载模式安装 Ding 模块 APK。

使用步骤(远程加载模式,推荐)

  1. 安装 Ding 模块 APK 到手机(跟普通 App 一样安装)
  2. 安装 NPatch Manager 或 FPA 到手机
  3. 使用框架管理器修补钉钉 APK,加载模式选择远程加载
  4. 在框架管理器中启用 Ding 模块、勾选钉钉作用域
  5. 安装修补后的钉钉 APK
  6. 强行停止钉钉(如已运行)并重新打开

桌面点击 Ding 图标即可进入设置页,体验与 LSPosed 一致。

兼容性说明

  • 模块使用标准 libxposed API 102(java_init.list + module.prop),两个框架均能直接加载
  • 所有 Hook 功能(防撤回、已读拦截、关键词提醒等)在免ROOT下正常工作
  • 设置页需要框架提供 XposedService;NPatch 和 FPA 均已声明支持
  • 语音转发仅支持单条长按操作,多选逐条转发在免ROOT下暂不支持
  • 配置备份使用系统文件选择器,正常可用

联系作者

Releases

7-1.07

Stable

11/8/2026, 2:31:49 PM

更新日志
实现免ROOT支持,有问题反馈!

Assets

1

6-1.06

Stable

11/8/2026, 9:28:29 AM

更新日志
增加:语音转发功能
只支持单条转发,多条请老老实实手搓

Assets

1

5-1.05

Stable

11/8/2026, 4:32:35 AM

更新日志
新增
禁止DING自动确认、右滑回复、拦截播放与点击上报

修复
「发送前确认」拦截点击取消后输入内容被清空的问题

优化了一些功能细节体验

Assets

1

4-1.04

Stable

11/7/2026, 3:24:49 AM

更新日志:
注意:为上架LSP仓库,更换了包名,本次版本安装后将之前旧模块卸载即可,首次安装用户无视该条

新增
关键词提醒、自动回复、配置备份恢复等功能

有建议和BUG欢迎反馈,做大做强再创辉煌!!

Assets

1

1-1.0

Stable

11/7/2026, 2:52:57 AM

初始版本发布,目前已实现防撤回、禁止已读上报、拦截输入状态显示
欢迎许愿。

Assets

1