Android 备用机短信转发

2018.07.13
SF-Zhou

之前的移动号用了七年,一时没法换,也舍不得换,很多短信还是会发到上面。然而移动的流量价格仍然处于 5-30 的水平,再加上工作的地方换了城市,所以新办了一张联通卡。无奈 iPhone 只能插入一张卡,笔者又不想随身携带两个手机,故而需要一个高可用并且安全的短信转发方案。

整理需求如下:手头上有一台安卓备用机,插入了以前使用的移动卡;iPhone 上使用新办的联通卡;安卓备用机上收到的短信需要及时地、安全地转发到 iPhone,并且转发的成本要尽可能低,最好有短信过滤功能。

调研

在网上搜索已有的方案,整理如下:

方案名 简介 成本
短信转移 由运营商提供,类似呼叫转移 0.1元 / 条
IFTTT 如果收到短信,则转发邮件或 Notification 流量
绿芽短信转发微信 成熟的 APP 方案,配置更简单,不开源 0.01元 / 条 + 流量
双卡助手 免费的 APP 方案,配置灵活,不开源 流量
短信助手 免费 APP 方案,转发短信或邮件,开源 0.1 元 / 条或流量

短信转移因为价格的原因 PASS;而 IFTTT 经过测试,无法在笔者的备用机(魅蓝 X)上正常工作,PASS;而绿芽短信转发微信和双卡助手经过测试,均可正常使用,但因为不开源,仍然担心其安全性;最后一个短信助手,转发短信成本太高,而转发邮件笔者担心其成功率。本来想把这个开源方案魔改一下,将发送部分换成 HTTP Request,然而因为没有安卓开发经验,魔改失败了[捂脸]。

理想中的方案应该是一个开源的,然后通过 HTTP Request 直接给 iPhone 发推送。By the way,目前找到三个可用的 HTTP Request 转推送的方案:

  1. 钉钉机器人,可以推送到钉钉群中;
  2. Server 酱,可以推送到微信公众号;
  3. IFTTT Webhooks,可以推送到 IFTTT 的 App 上。

最后,考虑到安全性和可拓展性,还是自己写代码好了[捂脸]

开发

首先,学习一下 Android 开发的基本流程。推荐直接看 Google 的官方文档,已经有中文版了(虽然是机翻的感觉)。学习完 Build your first app 之后,会对 Android 中的 Activity、Layout 和 Intent 有一个初步的认识。

再来,就是搜索现有的短信拦截方案。笔者在 GitHub 上找到了一个可用的方案:android-sms-listener。仿照其代码编写 Listener,并进行简单的测试,确认 OK。

然后,需要将拦截到的短信通过 HTTP Request 给 iPhone 发推送。这里选择的推送方案是钉钉机器人。Android 上推荐的 HTTP Library 是 Volley,如果感觉看文档比较慢,可以直接在 YouTube 上找实践视频,对初学者来说上手会更快一些。

最后,整合加测试,做成 App,如下。界面很简陋,在文本框里填入钉钉机器人的 Token,点击 SET 按钮即可。

值得注意的是,需要给 App 网络访问和读取短信的权限。另外需要将软件加入电源管理和加速的白名单中。这几步可以参考绿芽短信转发微信中的教程。

总结

当前的 App 是十分简陋的,但好在可用,后期会加入过滤等功能。软件在 GitHub 上开源,点击此处查看代码

不提供 APK 文件。如果你觉得 APK 就可以,那直接使用文中提供的两个闭源方案就好,不用折腾这个[捂脸]。

最后 Android 水真深。比如魅族的 Flyme 系统,6 代之后不允许第三方 App 读取带有验证码字样的短信,为了这个特地把系统降级到 5 了。当然这个是个好特性,更安全,只是不适合当前的场景。

如果你的备用机是 iPhone 的话,其实直接用短信设置里的 信息转发 。其使用流量完成多苹果设备的短信同步,高可用并且配置相当容易:登录同一个 Apple ID 即可[捂脸]