无活动启动Android应用程序

我的应用程序旨在仅作为服务运行(没有接口,只在后台运行)。 我的AndroidManifest.xml中没有提到任何活动,但是在电话启动时放置了一个接收器来启动应用程序。

             

问题是,当我正在开发(使用Eclipse)应用程序时,我需要经常测试我的更改。 当我运行应用程序(我的手机在调试模式下连接)时,我收到了一条消息

 [2011-12-14 00:18:40 - MyApp] Android Launch! [2011-12-14 00:18:40 - MyApp] adb is running normally. [2011-12-14 00:18:40 - MyApp] No Launcher activity found! [2011-12-14 00:18:40 - MyApp] The launch will only sync the application package on the device! [2011-12-14 00:18:40 - MyApp] Performing sync 

如何在运行时启动应用程序,而不必每次都重新启动它?


Android 3.1或更高版本不再可以编辑此function。 资源

除了EboMike提到的两个选项之外:您始终可以通过命令行发送BOOT_COMPLETED广播,而不是重新启动手机。

使用

 adb shell am broadcast -a android.intent.action.BOOT_COMPLETED 

这将导致像实际重启后的情况,并且还将触发任何第三方应用程序启动接收器。 在终端中输入一次后,您通常可以通过按向上箭头键然后在大多数操作系统上返回来重复它。 或者,您可以将其包含在重新安装应用程序后触发的脚本中。


如果您只想将广播限制到您的应用,您还可以指定一个组件:

 adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n your.app.packagename/.YourReceiverClassName 

这会将重新启动广播仅发送给您的接收方。 不会调用所有其他应用程序。

选项1:添加将启动服务的虚拟活动。 在发货之前将其取下。

选项2:创建第二个启动服务的测试应用程序。

使用广播接收器通过任何Intent启动服务

android.intent.action.BOOT_COMPLETED

在用户使用您的应用程序之前,在Android 3.1之上不可能的 ,因此要使用您的应用程序,必须有一个非UI活动(可以在oncreate()中调用finish)。

请参阅此处的certificate