【问题标题】:Can non-default SMS app ALWAYS receive broadcast when SMS received, even when force closed?非默认短信应用程序是否可以在收到短信时始终接收广播,即使在强制关闭时也是如此?
【发布时间】:2015-12-01 03:36:47
【问题描述】:
所以我按照这个guideline 在收到短信时显示一个简单的祝酒词。虽然在应用程序运行时它工作正常,但当我进入设置并强制关闭应用程序时,它停止工作。
我在 StackOverflow 上检查了许多类似问题的答案,但没有一个真正回答是否(以及如何)可以在每次收到 SMS 时执行一段代码,而无需将应用程序设置为默认 SMS 应用程序设备(Android 4.4+)。是吗?
考虑到甚至可以停止服务,当这种情况发生时,服务不再是解决方案。
我对 API 级别 19+ 感兴趣
谢谢
【问题讨论】:
标签:
android
sms
android-broadcastreceiver
【解决方案1】:
很遗憾,不,如果您的应用不是默认的 SMS 应用,这实际上是不可能的。
当用户强行关闭您的应用时,它会重新进入已停止状态,并且在显式启动您的应用之前,隐式SMS_RECEIVED 广播的静态注册接收器将无法工作再次;例如,用户从显式启动器快捷方式启动您的应用。
另一方面,默认 SMS 应用程序将发送 SMS_DELIVER 广播,这是明确的。即使默认值已被强制停止,该广播也会像任何其他显式启动 Intent 一样将其带出已停止状态。
如果及时性不是主要问题,您可以根据需要(例如,在每次启动时)查询 SMS Provider,并确定自上次检查以来您是否错过了任何新消息。