如何在安装时启动android服务

Posted

技术标签:

【中文标题】如何在安装时启动android服务【英文标题】:How to start android service on installation 【发布时间】:2011-01-08 18:45:32 【问题描述】:

我有一个设备管理应用程序,它本质上是从启动时在后台作为服务运行的。我想在安装后立即启动这个应用程序。我如何做到这一点?

【问题讨论】:

【参考方案1】:

你不能这样做——没有办法仅仅因为你的服务已经安装就自动启动它。

应用程序必须首先由用户通过某种活动来调用。或者,您将需要通过清单连接到一些相关的广播Intent,这样您就可以在其中一个事件发生时获得控制并以这种方式启动您的服务。或者,您需要要求用户重新启动,以便您的 BOOT_COMPLETED Intent 过滤器可以控制。

【讨论】:

谢谢,我怀疑可能是这种情况。考虑到操作系统总体上的深思熟虑,这似乎有点疏忽。 是的,这是故意的。下载应用程序时,应用程序安装会在后台自动进行。我们希望在用户第一次明确访问应用程序之前,不运行任何应用程序代码。 (请不要告诉用户重启他们的设备。没有必要。让他们运行你的应用程序并在第一次运行时进行初始化。) 好的,所以它并不是真正的安全,因为我可以在启动时运行代码,或者在传入的 SMS 上,或者在 next 包安装上。我会将其更多地归类为对预期平台行为的“轻推”类别。不过,对我的客户来说,它看起来就像一个错误——在 android 上,有一个额外的环可以跳过以使服务运行。这不是用户可以从市场中选择的应用程序,它更有可能是运营商或企业希望在手机上安装的那种应用程序,最好完全不需要任何最终用户交互。 如果运营商将其安装在手机上,手机将在到达用户手中之前重新启动,这仅仅是因为运营商不会保持手机库存运行——它们将被关闭在定制之后和交付给客户之前。就企业而言,Android 目前的形式是为消费者设计的,因此为了保护消费者免受恶意软件的侵害,平台中会有很多与企业想要的背道而驰的东西。 @CommonsWare:Plan B 所利用的技术是什么?【参考方案2】:

有一个漏洞 - Android Analytics SDK 用于在安装后立即发送意图 - 但它被关闭了(当然会产生很多混乱)。

但我相信,最终的答案就在这里:

http://developer.android.com/about/versions/android-3.1.html#launchcontrols

这似乎表明,从 3.1 开始,Google 决定应用程序处于停止状态,直到用户明确激活它们,例如通过启动应用程序或放置小部件。

这意味着监听普通广播的策略(即让您的应用秘密启动)也不起作用。

【讨论】:

以上是关于如何在安装时启动android服务的主要内容,如果未能解决你的问题,请参考以下文章

当服务器连接丢失时,如何自行停止和重新启动客户端的服务?

android 一个程序可以启动多少个服务

当应用程序在android上关闭时如何阻止重新启动服务?

Android Service的两种启动方式

如何把Android当普通Linux用在需要时再去启动它的各项服务

Android :: 需要在android应用程序恢复不活动时执行一些任务