安装MY应用程序时的android意图

时间:2011-12-14 21:58:33

标签: android

我需要在安装应用程序时执行操作。我已经研究过使用

Intent.PACKAGE_ADDED

但是我没有收到正在安装的应用程序中的意图。我想在第一次安装我的应用程序时运行代码。

用例是在线服务注册。我可以列出BOOT_COMPLETED,如果已经安装了应用程序就可以了,但我需要在用户首次安装应用程序时处理这个案例。

这篇文章, Can you run an intent or script when your app gets installed on Android?

建议收听TIMER_TICK并在第一次广播时执行注册并设置一个标志,以便在下一个TIMER_TICK时不执行该操作。这似乎有问题,因为无论你是否在接收器中做某事,你仍然每隔一分钟就开始使用你的接收器并在此过程中耗尽电池。

有更好的解决方案吗?

3 个答案:

答案 0 :(得分:5)

没有可靠的事件可以捕获。即使TIMER_TICK只能在Android 3.1下运行。从3.1开始。在您的应用处于活动状态之前,您无法接收系统广播(这意味着用户必须至少手动启动一次)

  

启动已停止应用程序的控件

     

从Android 3.1开始,系统的包管理器会跟踪   处于停止状态的应用程序并提供了一种方法   从后台进程和其他进程控制它们的启动   应用

     

[...]

     

请注意,系统会向所有人添加FLAG_EXCLUDE_STOPPED_PACKAGES   广播意图。这样做是为了防止来自后台的广播   来自无意或不必要的组件的服务   停止应用程序。   [..]

     

应用程序在首次安装时处于停止状态但是   尚未启动以及用户手动停止时   (在管理应用程序中)。

来自3.1. release notes

我建议您在首次启动应用时进行初始工作。

答案 1 :(得分:1)

对于新的市场,INSTALL_REFERRER意图现在在Android 3.1及更高版本的启动时触发。所以我们可以在我们的应用中收到它。但是,当应用程序处于停止状态时,它仍会在2.2的安装时触发。因此,如果是Froyo,我无法收到它。

答案 2 :(得分:0)

如果您愿意假设已安装Google Android Market应用,则可以使用INSTALL_REFERRER。有关详细信息,请参阅Get referrer after installing app from Android Market