4

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

要求的功能之一是让应用程序在 Android 设备启动时自动启动。我已经通过检测 ACTION_BOOT_COMPLETED 意图来实现此功能,如该线程中所述。但是,我看到了另一种方法,建议将应用程序设为主屏幕,如该线程中所述。

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

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

谢谢您的帮助!

编辑:我尝试通过修改 AndroidManifest.xml 将应用程序设置为主屏幕,如下 Holmes 建议的那样。到目前为止,我在比较这两种方法时发现:(1) 使用主屏幕方法的代码要简单得多,只需要对 AndroidManifest.xml 进行微小的调整,而不是进行更大幅度的更改和额外的 BroadcastReceiver 类. (2) 使用主屏幕方法的设置过程稍微复杂一些,因为您需要做的不仅仅是打开应用程序,但并不复杂。(3) 主屏幕方法在将用户限制在单个应用程序方面做得更好,因为他不能使用默认主屏幕来启动其他应用程序。基于这些结果,我可能会使用主屏幕方法。

4

3 回答 3

2

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

于 2015-08-03T20:04:50.800 回答
2

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

聆听ACTION_BOOT_COMPLETED与等待设备完成启动、启动其Home 应用程序然后启动您的应用程序相同。

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

但是,您可以将您的应用程序定义为HOMEAndroid 设备的应用程序。一旦完成启动,它将成为运行中的第一个可见应用程序。

<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 中取出电池并直接连接。这确实与您的问题无关,但我看到的方式可能对您的项目有所帮助。

于 2015-08-03T20:34:31.890 回答
0

对于您的需要 ACTION_BOOT_COMPLETED 非常好。请记住,应用程序需要至少手动启动一次 ACTION_BOOT_COMPLETED 才能在 3.0+ 的设备上运行

于 2015-08-03T20:42:01.433 回答