【问题标题】:What is the best approach for autostarting an Android app on a dedicated device?在专用设备上自动启动 Android 应用程序的最佳方法是什么?
【发布时间】:2015-10-26 01:00:39
【问题描述】:

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

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

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

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

感谢您的帮助!

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

【问题讨论】:

    标签: android startup boot homescreen dedicated


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复,@Marcin Orlowski。您能解释一下为什么这会比我采用的方法更好吗?
    • 恕我直言,这里的主要好处是它为您提供了伪信息亭模式,正如您所说,这将是唯一安装的应用程序,您不需要任何启动器。这也可以防止用户通过点击 HOME 按钮意外离开您的应用程序。
    【解决方案2】:

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

    收听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 更好的方法,那将对我有很大帮助。例如,通过采用这种方法而不是我采用的方法,我会避免哪些问题?谢谢!
    • 请检查编辑。我看到你决定采用这种方法。请考虑接受答案。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      相关资源
      最近更新 更多