非默认 SMS 应用程序在收到 SMS 时能否始终接收广播,即使在强制关闭时也是如此?
Can non-default SMS app ALWAYS receive broadcast when SMS received, even when force closed?
所以我按照这个 guideline 来在收到短信时显示一个简单的祝酒词。虽然当应用程序为 运行 时它工作正常,但当我进入设置并强制关闭应用程序时,它停止工作。
我在 Whosebug 上检查了很多类似问题的答案,但 none 实际上回答了是否(以及如何)在每次收到 SMS 时都执行一段代码,而无需设置应用程序作为设备上的默认短信应用程序 (Android 4.4+)。是吗?
考虑到甚至可以停止服务,当这种情况发生时,服务就不再是解决方案了。
我对 API 级别 19+
感兴趣
谢谢
不幸的是,不,如果您的应用不是默认的 SMS 应用,这实际上是不可能的。
当用户强行关闭您的应用程序时,它会回到 stopped 状态,并且为隐式 SMS_RECEIVED
广播静态注册的 Receiver 将不起作用直到您的应用程序再次明确启动;例如,用户通过显式启动器快捷方式启动您的应用程序。
另一方面,默认的 SMS 应用程序将传送 SMS_DELIVER
广播,这是明确的。即使默认已被强行停止,该广播也会像任何其他显式启动一样运行 Intent
以使其脱离 stopped 状态。
如果及时性不是主要问题,您可以根据需要查询 SMS 提供程序 - 例如,在每次启动时 - 并确定自上次检查以来您是否错过了任何新消息。
所以我按照这个 guideline 来在收到短信时显示一个简单的祝酒词。虽然当应用程序为 运行 时它工作正常,但当我进入设置并强制关闭应用程序时,它停止工作。
我在 Whosebug 上检查了很多类似问题的答案,但 none 实际上回答了是否(以及如何)在每次收到 SMS 时都执行一段代码,而无需设置应用程序作为设备上的默认短信应用程序 (Android 4.4+)。是吗?
考虑到甚至可以停止服务,当这种情况发生时,服务就不再是解决方案了。
我对 API 级别 19+
感兴趣谢谢
不幸的是,不,如果您的应用不是默认的 SMS 应用,这实际上是不可能的。
当用户强行关闭您的应用程序时,它会回到 stopped 状态,并且为隐式 SMS_RECEIVED
广播静态注册的 Receiver 将不起作用直到您的应用程序再次明确启动;例如,用户通过显式启动器快捷方式启动您的应用程序。
另一方面,默认的 SMS 应用程序将传送 SMS_DELIVER
广播,这是明确的。即使默认已被强行停止,该广播也会像任何其他显式启动一样运行 Intent
以使其脱离 stopped 状态。
如果及时性不是主要问题,您可以根据需要查询 SMS 提供程序 - 例如,在每次启动时 - 并确定自上次检查以来您是否错过了任何新消息。