无活动启动android应用程序

无活动启动android应用程序,android,android-manifest,startup,Android,Android Manifest,Startup,我有一个只作为服务运行的应用程序(没有接口,只是在后台运行)。我在AndroidManifest.xml中没有提到任何活动,但在电话启动时放置了一个接收器来启动应用程序 <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <service android:enabled="true" android:nam

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

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <service
        android:enabled="true"
        android:name=".MyAppService">
        <intent-filter>
            <action
                android:name = "me.myapp.MyAppService">
            </action>
        </intent-filter>
    </service>
    <receiver
        android:enabled="true"
        android:name=".BootReceiver">
        <intent-filter>
            <action android:name = "android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
    </receiver>
</application>
如何在运行时启动应用程序,而不必每次都重新启动它



编辑这对于Android 3.1或更高版本不再可能

选项1:添加将启动服务的虚拟活动。装运前将其拆下


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

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

使用

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


如果要将广播仅限于应用程序,还可以指定一个组件:

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

这只会将重新启动广播发送到接收器。不会调用所有其他应用程序。

通过任何类似的意图使用广播接收器启动服务

android.intent.action.BOOT\u已完成

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


谢谢,干得不错。也许我也可以创建自己的事件,只有我的应用程序才能捕获,以避免与其他第三方应用程序发生冲突。@MartinTrigaux刚刚检查了文档,并记住可以指定一个组件来实现这一点。查看我的编辑。应用程序在运行时将如何运行?什么将使应用程序运行?启动后运行还不够好,因为Android可能会扼杀进程。什么会再次引发它?
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