






















今天在 GitHub Trending 上看到一个有意思的项目:SmsForwarder,它能把 Android 备用机的短信、来电和 APP 通知自动转发到你的主力设备,再也不怕错过备用机上的重要信息了。
SmsForwarder(短信转发器)是一款开源 Android 应用,核心功能是监控手机上的短信、来电和 APP 通知,然后根据用户配置的规则,将消息转发到指定的目标渠道。
核心特性:
SmsForwarder 采用经典的 Android 监听+转发架构:
SMS_RECEIVED)和来电事件,通过 NotificationListenerService 监听 APP 通知| 模块 | 技术选型 | 说明 |
|---|---|---|
| UI 框架 | XUI | 提供统一的设计规范和组件库 |
| 在线升级 | XUpdate | 支持多渠道升级检测 |
| 权限管理 | XXPermissions | 简化 Android 动态权限申请 |
| 内网穿透 | frpc_android | 实现远程控制能力 |
| 进程保活 | Cactus | 保证后台服务持续运行 |
| HTTP 服务 | AndServer | 内嵌 Web 服务器,提供远程控制 API |
| 定位服务 | Location | 支持基于位置的自动化规则 |
在 Android 系统对后台进程管控日益严格的背景下,SmsForwarder 使用 Cactus 保活框架确保短信监听服务不被系统杀死:
// Cactus 保活配置示例
Cactus.getInstance()
.isDebug(true)
.setPendingIntent(pendingIntent)
.addCallback(new CactusCallback() {
@Override
public void doWork(int i) {
// 保活回调,确保服务持续运行
}
})
.register(this);
短信/来电/通知 → BroadcastReceiver/NotificationListenerService
→ 规则匹配引擎(发送人+关键词过滤)
→ 匹配成功 → 渠道适配器(钉钉/微信/飞书/邮箱/...)
→ HTTP API 调用 → 消息送达
→ 匹配失败 → 忽略
以配置钉钉群机器人为例:
规则示例:
匹配规则: 发送人包含 "10086" 或 "95588"
关键词: "验证码" 或 "余额"
转发到: 邮箱 + Bark
附加操作: 标记为已读
这样只有运营商和银行的重要短信才会被转发,避免垃圾短信干扰。
利用内置的 AndServer HTTP 服务,可以通过 RESTful API 远程操作备用机:
配合 frpc_android 内网穿透,即使备用机不在同一局域网也能远程控制。
V3.3 新增的自动任务功能,支持基于时间、位置等条件触发特定操作:
现象:一段时间后不再转发消息。
解决方案:
现象:APP 通知不再转发,但短信正常。
解决方案:部分 ROM 重启后会重置通知监听权限,需重新在系统设置中授权,或在 SmsForwarder 设置中开启「通知监听守护」。
现象:短时间内大量短信时转发有延迟。
解决方案:调整转发间隔和并发数设置,或在规则中设置去重逻辑,避免同一条短信被重复转发。
解决方案:Android 13 引入了 POST_NOTIFICATIONS 运行时权限,需确保已授予。SmsForwarder V3.x 已适配,首次启动时会请求该权限。
SmsForwarder 是一款功能完善、设计合理的 Android 短信转发工具,它解决了"备用机短信无人查看"的痛点,支持十余种主流转发渠道,还提供远程控制和自动化任务等高级功能。项目基于成熟的开源组件构建(XUI、AndServer、Cactus 等),代码质量较高,文档完善,社区活跃。对于拥有 Android 备用机的用户来说,这绝对是一款必备工具。
项目地址:https://github.com/pppscn/SmsForwarder
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。