换手机号一直是个麻烦事儿,尤其是跨运营商的情况下,携号转网至今仍然存在大量问题,因此只能成为双卡党;但是有时手机不支持双卡,就只能更进一步成为双机党。

成为双机党最麻烦的事儿莫过于需要带两台手机了,不过还好我比较闲置的那个手机号只需要接受短信就好,所以写个App来将闲置手机的短信转发到邮箱、即时聊天工具等就可以解决这个问题。

编程思路非常简单,App申请互联网和短信权限,然后注册一个监听android.provider.Telephony.SMS_RECEIVED事件的广播接收器,然后将收到的短信转发即可。

开发中遇到的问题主要有两个:

  • 收到因字数上限分段的短信时不会自动合并
  • 自Android Oreo开始,无法静态注册该事件的广播接收器

前者的解决方案是检查短信的时间和发件人,合并分段短信。

后者的解决方案是让用户主动开启一个 Foreground Service 然后从这个Service动态注册一个广播接收器,只要保证Service存活即可,在原生安卓系统下前台Service很少会被强制结束。
不过由于我的闲置手机仍然在运行Android 6.0系统,因此无需通过这样麻烦的方式来注册广播接收器。