/SmsForwarder

短信转发器——监控Android手机短信、来电、APP通知,并根据指定规则转发到其他手机:钉钉机器人、企业微信群机器人、飞书机器人、企业微信应用消息、邮箱、bark、webhook、Telegram机器人、Server酱、PushPlus、手机短信等。PS.这个APK主要是学习与自用,如有BUG请提ISSUE,同时欢迎大家提PR指正

Primary LanguageJavaBSD 2-Clause "Simplified" LicenseBSD-2-Clause

SmsForwarder (短信转发器)

短信转发器——监控Android手机短信、来电、APP通知,并根据指定规则转发到其他手机:钉钉机器人、企业微信群机器人、飞书机器人、企业微信应用消息、邮箱、bark、webhook、Telegram机器人、Server酱、PushPlus、手机短信等。

首发地址:https://github.com/pppscn/SmsForwarder

同步镜像:https://gitee.com/pp/SmsForwarder

网盘下载:https://wws.lanzoui.com/b025yl86h 访问密码:pppscn


特别声明:

  • 本仓库发布的SmsForwarder项目中涉及的任何代码/APK,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。

  • 间接使用代码/APK的任何用户,包括但不限于在某些行为违反国家/地区法律或相关法规的情况下进行传播, pppscn 对于由此引起的任何隐私泄漏或其他后果概不负责。

  • 如果任何单位或个人认为该项目的代码/APK可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关代码/APK。

  • 隐私声明:SmsForwarder 不会收集任何您的隐私数据!!!APP启动时发送版本信息发送到友盟统计;手动检查新版本时发送版本号用于检查新版本;除此之外,没有任何数据!!!


特点和准则:

  • 简单 只做两件事:监听手机短信/来电/APP通知 --> 根据指定规则转发

由此带来的好处:

  • 简洁:(当时用Pad的时候,看手机验证码各种不方便,网上搜了好久也有解决方案)
    • AirDroid:手机管理工具功能太多,看着都耗电,权限太多,数据经过三方,账号分级
    • IFTTT:功能太多,看着耗电,权限太多,数据经过三方,收费
    • 还有一些其他的APP(例如:Tasker)也是这些毛病
  • 省电:运行时只监听广播,有短信才执行转发,并记录最近n条的转发内容和转发状态
  • 健壮:越简单越不会出错(UNIX设计哲学),就越少崩溃,运行越稳定持久

工作流程:

工作流程

功能列表:

  • 监听短信,按规则转发(规则:什么短信内容/来源转发到哪里)
  • 转发到钉钉机器人(支持:单个钉钉群,@某人)
  • 转发到邮箱(支持:SMTP)
  • 转发到Bark(支持:验证码/动态密码自动复制)
  • 转发到webhook(支持:单个web页面(向设置的url发送POST/GET请求))
  • 转发到企业微信群机器人
  • 转发到企业微信应用消息
  • 转发到ServerChan(Server酱·Turbo版)
  • 转发到Telegram机器人
  • 转发到其他手机短信【注意:非免费的,转发短信运营商有收费的,建议没有网络时启用,并设置好内容过滤规则】
  • 在线检测新版本、升级
  • 清理缓存
  • 兼容 Android 6.xx、7.xx、8.xx、9.xx、10.xx
  • 支持双卡手机,增加卡槽标识/运营商/手机号(如果能获取的话)
  • 支持多重匹配规则
  • 支持标注卡槽号码(优先使用)、设备信息;自定义转发信息模版
  • 支持正则匹配规则
  • 支持卡槽匹配规则
  • 转发未接来电提醒(固定sim1卡发出提醒)
  • 接口请求失败后延时重试5次(可配置间隔时间,成功一次则终止重试)
  • 转发到飞书机器人
  • 自定义 Scheme(forwarder://main)用于唤起App
  • 低电量预警(设置30%,则30、29时都通知一下,避免错过!按需设置一下转发规则(不再遍历所有发送通道)【号码:88888888、内容:当前剩余电量:xx%,已经到达低电量预警阈值,请及时充电!、卡槽:sim1】)
  • 多语言支持(目前:中文、英文)
  • 增加配置导出导入功能(一键克隆)
  • 监听其他APP通知信息并转发
  • 转发到PushPlus

使用流程:

  1. 在Android手机上安装SmsForwarder本APP后点击应用图标打开
  2. 在设置发送通道页面,添加或点击已添加的发送通道来设置转发短信使用的方式,现在支持钉钉机器人、企业微信群机器人、企业微信应用消息、邮箱、bark、webhook、Telegram机器人、Server酱:

    发送通道配置见《发送通道设置参考》章节

  3. 在设置转发规则页面,添加或点击已添加的转发规则来设置转发什么样的短信,现在支持转发全部、根据手机号、根据短信内容、指定卡槽:
    • 当设置转发全部时,所以接收到的短信都会用转发出去。
    • 当设置根据手机号或短信内容时,请设置匹配的模式和值,例如:”手机号 是 10086 发送通道选钉钉“。
  4. 点击主页面右上角的菜单可进入设置页面,在设置页面可以更新应用查看应用信息提交意见反馈等
  5. 在主页面下拉可刷新转发的短信,点击清空记录可删除转发的记录

该APP打开后会自动后台运行并在任务栏显示运行图标,请勿强杀,退出后请重新开启,并加入到系统白名单中,并允许后台运行

近期接收到部分用户反馈,SmsForwarder无法正确转发通知类短信(普通短信正常),涉及 ROM 有华为 EMUI、小米 MIUI、VIVO OriginOS、OPPO ColorOS等。国内厂商定制系统提供了验证类短信安全保护功能,导致验证码不能正常通过广播获得。以下是解决方案:

风险警示:转发验证码可能导致您的个人隐私、账户安全受到损害,如果您已经知晓该风险,请继续进行以下操作。

华为 EMUI: 信息 > 更多 > 设置 > 高级 关闭验证码安全保护开关。 via:https://club.huawei.com/thread-17770781-1-1.html

小米 MIUI: 安全中心 > 授权管理 > 短信转发器 > 权限 > 勾选通知类短信

vivo 手机: 信息 > 左上角3个点 > 设置 > 隐私保护 > 关闭验证码安全保护开关

【注意】如果无法关闭验证码安全保护,可以尝试“转发应用通知”的形式进行转发(部分手机系统通知中的验证码会打星号,目前无解)

  1. 稳定保活发送方案 使用红米9A手机
    1. 使用usb线接入电脑或者服务器。
    2. 安装adb组件。
    3. 打开开发者模式
    4. adb进行授权 adb attach 然后允许授权
    5. 配置定时任务每分钟执行命令 adb shell am start -n com.idormy.sms.forwarder/com.idormy.sms.forwarder.MainActivity

发送通道设置参考

钉钉机器人

  • 【PC端】任意拉两个人成立一个群组,然后将其他人踢出群(PS.【手机端】右上角+号,发起群聊,面对面建群,输入4位数字后,直接点击进入群聊)
  • 在群设置->智能群助手->添加机器人,添加一个新的「自定义机器人」
  • 自定义机器人,安全设置->加签,复制到「加签Secret」一栏
  • 复制自定义机器人的链接中的"access_token="后面的内容到「设置Token」一栏
  • 点击【测试】按钮验证一下

邮件

  • 发件服务器:邮箱的SMTP服务器地址,如 smtp.qq.com
  • SMTP端口:SMTP服务器的端口号:通常是25;开启SSL之后,通常是465
  • 发件账号:用于发送提醒邮件的邮箱,例如 xxxx@qq.com
  • 登录密码/授权码:用于发送提醒邮件的密码,QQ邮箱可在邮箱设置中生成一组三方邮件服务专用的授权码,其他邮箱可能需要输入登录密码
  • 收件地址:用于接收提醒的邮箱,例如 yyyy@qq.com
  • 点击【测试】按钮验证一下

Bark(转发IOS最佳体验,强烈推荐)

Webhook

企业微信群机器人

  • 任意拉两个人成立一个群组,然后将其他人踢出群
  • 在会话列表右键点击刚创建的群->添加群机器人->新创建一个机器人->自定义机器人名称
  • 复制WebHook地址到「设置WebHook地址」一栏
  • 点击【测试】按钮验证一下

企业微信应用消息

  • 登录 企业微信管理后台
  • 我的企业 复制「企业ID」
  • 应用管理创建应用
  • 进入自建应用,复制「AgentId」和「Secret」
  • 默认是 @all (应用的可见范围内所有人),如果只想通知一个人,在「指定成员」一栏填写员工账号
  • 点击【测试】按钮验证一下
  • 【技巧】无需下载企业微信客户端,直接用微信扫码关注 微信插件,即可在微信中接收企业通知和使用企业应用

Server酱·Turbo版

  • 微信扫码登录 Server酱·Turbo版
  • 消息通道 配置消息通道设置
  • SendKey 栏目复制SendKey,粘贴到设置「设置Server酱·Turbo版的SendKey」一栏
  • 点击【测试】按钮验证一下

Telegram机器人(需自备梯子)

  • 与 @BotFather 私聊,申请 Bot
    • /newbot 后输入机器人昵称
    • 然后输入机器人的用户名(建议:使用密码生成器生成随机字符串,避免一直重复尝试;用户名必须用 bot 作为结尾)
    • /token 获取apiToken,然后输入上面机器人的用户名
    • 获得apiToken,格式参考:1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZ
  • 复制 apiToken 到「设置Telegram机器人的ApiToken」一栏
  • 获取自己(或群组)的ChatID,粘贴到「设置被通知人的ChatId」一栏
    • 跟自己的机器人聊天,随便说点什么;或者创建一个群组,把机器人拉入群组,在群组里随便说点什么。
    • 然后打开这个链接 https://api.telegram.org/bot<apiToken>/getUpdates 获取(PS.注意换成你自己的)
    • ChatID 取值 result->message->chat->id (个人是纯数字;群组是负数,type:group;)
  • 点击【测试】按钮验证一下

其他手机短信【注意:非免费!非免费!非免费!】

  • 指定发送卡槽:1、原进原出——哪个卡槽收到的短信就用哪张卡转发短信出去;2、SIM1/SIM2——固定卡槽转发短信;
  • 设置接收手机,多个号码以半角分号分隔,例如:15888888888;19999999999
  • 仅当无网络时启用:建议开启,毕竟发短信1毛/条还挺贵的(套餐有送的/土豪可以忽视它)

飞书机器人

  • 在飞书PC端,创建一个群组
  • 在群设置->群机器人->添加机器人,添加一个新的「自定义机器人」,名称与描述随意
  • 复制自定义机器人的“webhook 地址”到「webhook 地址」一栏
  • 【可选】安全设置->签名校验,复制到「加签 Secret」一栏
  • 点击【测试】按钮验证一下

PushPlus

应用截图:

前台服务常驻状态栏 应用主界面 转发规则 转发详情
前台服务常驻状态栏 应用主界面 转发规则 转发详情
添加/编辑转发规则测试 多重匹配规则 支持以下转发方式(发送通道) 添加/编辑发送通道钉钉
添加/编辑转发规则 多重匹配规则 发送通道 添加/编辑发送通道钉钉
添加/编辑发送通道邮箱 添加/编辑发送通道Bark 添加/编辑发送通道网页通知 添加/编辑发送通道企业微信群机器人
添加/编辑发送通道邮箱 添加/编辑发送通道Bark 添加/编辑发送通道网页通知 添加/编辑发送通道企业微信群机器人
添加/编辑发送通道Telegram机器人 添加/编辑发送通道Server酱·Turbo版 添加/编辑发送通道企业微信应用 应用设置
添加/编辑发送通道Telegram机器人 添加/编辑发送通道Server酱·Turbo版 添加/编辑发送通道企业微信应用 应用设置
关于/在线升级 支持正则匹配规则 & 支持卡槽匹配规则 转发短信模板增加卡槽标识 添加/编辑发送通道其他手机短信
在线升级 支持正则匹配规则 & 支持卡槽匹配规则 转发短信模板增加卡槽标识 添加/编辑发送通道其他手机短信
添加/编辑发送通道飞书机器人 增加配置导出导入功能(一键克隆) 监听其他APP通知信息并转发 获取所有应用列表(方便复制APP包名)
添加/编辑发送通道飞书 增加配置导出导入功能(一键克隆) 监听其他APP通知信息并转发 获取所有应用列表(方便复制APP包名)

更新记录:

  • [v1.0.0] 优化后第一版
  • [v1.1.0] 新增在线升级、缓存清理、加入QQ群功能
    • [v1.1.1] 更新应用/通知栏图标
    • [v1.1.2] 获取系统(ROM)类别及版本号,MIUI通知栏显示标题
    • [v1.1.3] AlertDialog增加滚动条,避免参数过长时无法点击按钮
  • [v1.2.0] 重写SMTP邮件发送(推荐升级)
    • [v1.2.1] 修复bark-server升级到2.0后的兼容性问题
    • [v1.2.2] 【预发布】短信模板增加卡槽标识(SIM1_**联通_Unknown 或 SIM2_**移动_+8615866666666)
    • [v1.2.3] 【预发布】转发日志列表/详情增加卡槽标识(SIM1 或 SIM2)
  • [v1.3.0] 支持双卡手机,增加卡槽标识/运营商/手机号(如果能获取的话)
  • [v1.4.0] 支持多重匹配规则
    • [v1.4.1] 设置中允许关闭页面帮助/表单填写提示
  • [v1.5.0] 新增转发到企业微信应用消息
    • [v1.5.1] 解决Android 9.xx、10.xx收不到广播问题
    • [v1.5.2] 支持标注卡槽号码(优先使用)、设备信息;自定义转发信息模版
  • [v1.6.0] 优化获取SIM信息(兼容高版本Android) & 自动填写设备备注 & 自动填充卡槽信息到SIM1备注/SIM2备注 & 支持卡槽匹配规则 & 支持正则匹配规则
    • [v1.6.1] 新增转发到Server酱·Turbo版
    • [v1.6.2] 新增转发到Telegram机器人
    • [v1.6.3] 转发到webhook支持GET方式(节点改变,原配置要重新编辑);兼容Android5.0(待验证,仅minSdkVersion改为21);修复钉钉机器人没启用加签时url拼接错误问题
    • [v1.6.4] Android8.1以下手机重启后尝试启动主界面,以便动态获取权限(修复开机自启后无法转发短信,要打开软件后才会转发短信的问题)
  • [v1.7.0] 新增转发到其他手机短信 & 避免热插卡时FC & 规则展示优化 & 获取多卡信息&获取卡槽备注优化 & 新增恢复初始化配置
    • [v1.7.1] 新增转发记录的转发状态(成功/失败&应答信息)
    • [v1.7.2] 新增V1版证书签名,避免部分低版本系统(Android 6.x)无证书错误 & 发送通道邮箱允许自定义发件人昵称
    • [v1.7.3] 修复“设置匹配模式”默认选择BUG & 转发到webhook时返回http状态200即为成功 & 转发到其他手机短信支持长短信合并
    • [v1.7.4] 修复转发企业微信群机器人碰到"被截断问题 & 转发到webhook时忽略ssl证书校验(提高自建服务端兼容性) & 转发telegram时将 # 替换为 井,避免被当作标签 & 隐私保护,发送通道设置中敏感信息(密码/token/secret等)用星号显示 & 更新友盟基础组件库 & 解决“设置页面关闭卡槽信息,同时使用默认模板时,发送消息卡槽信息仍显示”
  • [v2.0.0] 来电提醒转发 & 接口请求失败后延时重试5次(可配置间隔时间)& 转发到飞书机器人 & 自定义 Scheme(forwarder://main)用于唤起App & 低电量预警 & 重新梳理代码(消灭waring)& Bark增加支持分组 & 引入Lombok & 升级gradle版本 & 增加电池优化白名单设置和权限 & 转发到webhook增加支持自定义post数据,并支持Json数据提交
    • [v2.0.1] 改进低电量预警方式,按需设置一下转发规则(不再遍历所有发送通道)【号码:88888888、内容:当前剩余电量:xx%,已经到达低电量预警阈值,请及时充电!、卡槽:sim1】
  • [v2.1.0] 增加配置导出导入功能(一键克隆) & bark新增指定推送消息图标 & 简化设置,取消“转发时附加卡槽信息”和“转发时附加设备名称”开关,若需要直接修改“转发信息模板” & 修复转发未接来电开关失效问题
    • [v2.1.1] fix:自定义模板&匹配的值输入框支持多行文本 & fix:取消“转发时附加卡槽信息”和“转发时附加设备名称”开关
  • [v2.2.0] 新增:监听其他APP通知信息并根据规则转发 & 修复Telegram手机号丢失问题 & 优化:来电转发增加获取卡槽信息 & 优化:Telegram转发支持自定义bot地址(复用ApiToken字段,http开头) & 新增:添加转发规则时允许自定义模板(留空则取全局设置) & 修复:bark指定推送消息图标空指针判断bug & 新增:转发短信总开关 & 优化:ActionBar弹出菜单的位置 & 新增:获取所有应用列表(方便复制APP包名) & 新增:转发到PushPlus & 新增:帮助文档(跳转Gitee的wiki)& 优化:不在最近任务列表中显示(利于措施)

反馈与建议:

  • 提交issues 或 pr
  • 加入交流群(群内都是机油互帮互助,禁止发任何与SmsForwarder使用无关的内容)
QQ机油互助交流1群:562854376 QQ机油互助交流2群:31330492 企业微信群
QQ交流群:562854376 QQ交流群:31330492 企业微信群

感谢

本项目使用(或借鉴)了以下项目(或部分代码),在此表示衷心的感谢!

LICENSE

BSD

如果觉得本工具对您有所帮助,给个小星星鼓励一下!

starcharts stargazers over time