【发布时间】:2014-10-18 18:09:00
【问题描述】:
总的来说,我对 Android 和编程非常陌生,所以我正在玩不同的游戏 在 stackoverflow 上收集的教程和信息。
我想要完成的是让带有我的 SMS BroadcastReceiver 的应用程序作为服务运行,这样当应用程序在后台时我可以获取所有 SMS 广播。
另外,如何添加一个 BroadcastReceiver 来接收 BOOT_COMPLETED 的广播并自动启动应用程序?
我需要几项服务,还是一项服务就足够了? (用于连续检测 SMS + BOOT_COMPLETED)
目前我已经创建了一个用于获取 SMS 的 BroadcastReceiver,如下所示;
public class SMS extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
.. etc ..
.. etc ..
}
我的 AndroidManifest.xml 文件具有接收器和意图过滤器
补充android.provider.Telephony.SMS_RECEIVED
获取 SMS 广播工作正常,但我不知道从哪里开始。
非常感谢所有帮助:)
谢谢。
【问题讨论】:
-
您知道在 Android 中,“服务”不与 Windows 中的“服务”相同,对吧?运行服务不断消耗电池。也许您想要的是一个 IntentService,它在处理所有发送给它的待处理 Intent(例如通过您的广播接收器)后自行停止。
-
是的,如果我正确理解这个概念,它会消耗电池。但我正在寻找如何从广播接收器连续获取短信的解决方案。 :)
-
如果我没记错的话,系统会调用你的广播接收器。无需服务。请有人纠正我或确认这一点,因为我不再 100% 确定。
-
所以不需要Service启动就可以持续运行?如果是这样,那就太好了。但我见过其他的广播接收器,比如 BOOT_COMPLETED 和传入/传出电话号码,它们都是由服务运行的?
-
问题是:您可以动态注册接收器,也可以通过清单注册。取决于所需的行为。例如,如果您想在您的应用程序中接收 wifi 连接广播,您将在 onResume 中注册并在 onPause 中取消注册。在其他情况下,让一个服务能够在应用程序处于后台时接收它可能是明智的......
标签: android service broadcastreceiver