3

所以我按照这个指南在收到短信时显示一个简单的祝酒词。虽然在应用程序运行时它可以正常工作,但当我进入设置并强制关闭应用程序时,它会停止工作。

我在 StackOverflow 上检查了许多类似问题的答案,但没有一个真正回答是否(以及如何)每次收到 SMS 时都可以执行一段代码,而无需将应用程序设置为设备上的默认 SMS 应用程序(Android 4.4+)。是吗?

考虑到甚至可以停止服务,当这种情况发生时,服务不再是解决方案。

我对 API 级别 19+ 感兴趣

谢谢

4

1 回答 1

5

不幸的是,不,如果您的应用程序不是默认的 SMS 应用程序,这实际上是不可能的。

当用户强行关闭您的应用程序时,它会重新进入停止SMS_RECEIVED状态,并且在您的应用程序再次显式启动之前,静态注册的隐式广播接收器将无法工作;例如,通过用户从显式启动器快捷方式启动您的应用程序。

另一方面,默认 SMS 应用程序将传送SMS_DELIVER广播,这是明确的。即使默认值已被强制停止,该广播也会像任何其他显式开始一样Intent将其从停止状态中取出。

如果及时性不是主要问题,您可以根据需要查询 SMS 提供程序 - 例如,在每次启动时 - 并确定自上次检查以来您是否错过了任何新消息。

于 2015-12-01T04:25:42.943 回答