在专用设备上自动启动 Android 应用程序的最佳方法是什么?

What is the best approach for autostarting an Android app on a dedicated device?

我是 Android 编程的新手,正在开发一个应用程序,该应用程序将为设备提供接口。该应用程序将 运行 用于的 Android 设备将连接到设备并且仅用于控制设备。我正在开发的应用程序将是 运行 专用 Android 设备上唯一的应用程序。

请求的功能之一是让应用程序在 Android 设备启动时自动启动。我通过检测 ACTION_BOOT_COMPLETED 意图实现了此功能,如 this thread. I have, however, seen an alternative approach recommended of making the app the home screen, as described in this thread.

中所述

我意识到,正如我所做的那样,通过检测 ACTION_BOOT_COMPLETED 来实现自动启动功能可能不是通常用于 Android 应用程序的最佳方法。但是,如前所述,在我的例子中,我正在开发的应用程序将是设备上唯一使用过的应用程序。鉴于此,我采取的方法合理吗?或者有没有更好的方法来实现自动启动功能?

请注意,一个考虑因素是易于配置 Android 设备。对于我采用的方法,需要一个手动步骤,即第一次启动应用程序。但如果我采用将应用程序设为主屏幕的替代方法,似乎还需要手动步骤,因此在这方面,采用该方法没有任何优势。

感谢您的帮助!

编辑: 我已尝试按照福尔摩斯在下面的建议修改 AndroidManifest.xml 将应用程序设置为主屏幕。到目前为止,这是我在比较这两种方法时发现的:(1) 使用主屏幕方法的代码要简单得多,只需要对 AndroidManifest.xml 进行微小的调整,而不是进行更实质性的更改和额外的广播接收器 class。 (2) 使用主屏幕方法的设置过程稍微复杂一些,因为您需要做的不仅仅是打开应用程序,但不会复杂得多。 (3) 主屏幕方法在将用户限制在单个应用程序方面做得更好,因为他不能使用默认主屏幕来启动其他应用程序。基于这些结果,我可能会使用主屏幕方法。

根据您的问题,我会让该应用充当启动器(也称为主屏幕)。在这种情况下,一旦将应用程序设置为设备启动器,就不需要收听 ACTION_BOOT_COMPLETED

我目前正在开发专用设备应用程序,我可以为您提供一些可能有用的详细信息。

收听 ACTION_BOOT_COMPLETED 等同于等待设备完成启动,启动它的 Home 应用程序,然后启动您的应用程序。

我相信您不希望您的最终客户看到主屏幕,我也不希望。

但是,您可以将您的应用程序定义为 Android 设备的 HOME 应用程序。一旦完成启动,它将成为 运行.

上第一个可见的应用程序
<activity....>
<!-- Put this filter inside the activity you want to make the Home screen -->
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.HOME" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

注意:如果您需要设备在专用设备打开时自动启动,请尝试从 Android 中取出电池并直接连接。这确实与您的问题无关,但我的看法可能对您的项目有所帮助。

满足您的需求ACTION_BOOT_COMPLETED很好。请记住,应用程序需要至少手动启动一次 ACTION_BOOT_COMPLETED 才能在 3.0+

的设备上运行