如何直接从初始屏幕直接启动 android 应用程序,而不显示主屏幕?

How to directly boot your android app straight from splash screen, without showing the home screen?

我正在准备 Android 平板电脑作为制成品的一部分。平板电脑变成了操作机器的专用工具,显示一些实时数据并通过蓝牙将一些文件从平板电脑移动到 phone。由于各种原因,包括遗留问题,我们希望坚持使用 Android 平板电脑。 我将在 "kiosk" 模式下 运行 应用程序,这本身根本不是问题。我什至设置了应用程序来捕捉 android.intent.action.BOOT_COMPLETED 自动启动应用程序的意图。

唯一的问题是重启平板电脑时,在显示我们的自定义启动屏幕后,它会在启动我们的应用程序之前短暂显示主屏幕,允许用户通过启动其他应用程序进行干预,更改 Android系统设置等 我想通过将启动屏幕延长到应用程序启动或 disable/remove 平板电脑的主屏幕(首选选项)来解决此问题。

我使用有根设备。如果绝对必要,自定义 ROM 是一种选择,但我不想走那条路。 我完全被困在这一点上,任何 help/thoughts/options 将不胜感激。

在 Android 中可以创建启动器应用程序。这可用于自定义 Android 设备的主屏幕。此应用程序将取代您的主屏幕。在普通的启动器应用程序中,您希望实现打开其他应用程序的行为。但这在您的情况下不是必需的,因为您想要创建一个信息亭应用程序。

对您来说,只需将这两行添加到您的 mainActivity 的 intent-filter 中即可:

<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />

你的结果将是这样的:

 <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

当您按下主页按钮时,您将可以选择默认启动器应用程序。将您的应用标记为默认启动器,它将替换主屏幕。 您还可以在设备的设置中更改启动器应用程序。

您可能还想实施 auto-restart,因为如果您的启动器应用程序崩溃,用户可以选择他想要使用的启动器应用程序并可以退出信息亭模式。