使用React Native开发支持短信转发邮件的安卓应用是否可行?
答复
完全可以用React Native开发符合需求的安卓应用,三个核心功能均有成熟实现路径,不需要编写大量复杂底层原生代码,重点注意适配不同安卓版本的权限规则即可。
各功能实现要点
- 读取设备最新接收短信
安卓系统原生提供短信Content Provider接口,你可以直接使用社区维护的成熟原生桥接库调用相关能力,无需从零编写原生桥接逻辑。安卓6.0及以上版本需要动态申请READ_SMS运行时权限;安卓11及以上版本读取其他应用关联的短信时,需要在应用清单文件中配置对应包可见性规则,否则查询会返回空结果。拿到查询权限后,将短信列表按接收时间戳倒序排序,取第一条结果即为设备最新接收的短信。 - 短信到达自动触发事件
安卓系统在接收到新短信时会全局下发android.provider.Telephony.SMS_RECEIVED系统广播,你只需要在安卓清单中注册对应广播接收器,配合React Native的原生事件抛送机制,就能在短信到达的第一时间将短信内容、发件人、接收时间等信息传到JS层,触发你预设的业务逻辑。需要注意安卓8.0及以上版本对静态广播接收器做了权限收紧,小米、华为、OPPO等国产定制安卓系统还会额外限制后台应用的广播接收权限,需要引导用户手动给应用开启自启动、后台运行无限制权限,才能保证应用在后台被清理的状态下也能正常触发短信到达事件,开发时需要申请RECEIVE_SMS运行时权限。 - 短信内容转发至指定邮箱
JS生态有成熟的SMTP客户端库可以直接使用,你只需要配置好邮箱SMTP服务的地址、端口、账号、授权码,就能在JS层直接把捕获到的短信内容拼接为邮件正文,自动发送到指定邮箱。注意不要把邮箱账号、授权码硬编码在前端安装包中,容易被反编译泄露造成账号被盗,个人自用的话最好搭一个简单的中转后端服务承担邮件发送逻辑;如果不想额外搭建服务,也可以调用系统自带的邮件客户端发信,但这种方式需要用户手动点击确认,无法做到完全无感自动转发。
注意事项:如果你的应用要上架Google Play商店,平台对短信读取、接收类权限的审核规则极其严格,非核心场景必须使用这类权限的应用基本都会被驳回,仅个人自用打安装包安装到自己设备使用则没有这个限制。另外部分定制安卓系统会默认关闭第三方应用的短信相关权限,安装后需要手动在权限管理页开启所有相关授权,否则功能会出现偶发失效的问题。
内容的提问来源于stack exchange,提问作者X0-user-0X
相关产品推荐
相关产品推荐

