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

Adr*_*oom 5 android root homescreen kiosk-mode

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

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

我使用已取得 root 权限的设备。如果绝对必要的话,定制 ROM 是一个选择,但我不喜欢走这条路。我完全陷入了这一点,任何帮助/想法/选项将不胜感激。

Roc*_*ney 4

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

对于您来说,这就像将这两行添加到 mainActivity 的意图过滤器中一样简单:

<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
Run Code Online (Sandbox Code Playgroud)

你的结果将是这样的:

 <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>
Run Code Online (Sandbox Code Playgroud)

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

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