android - 如何仅使用一个应用程序制作嵌入式 Android 操作系统?

标签 android arm embedded kiosk-mode

我想在 Android (ARM) 上构建自己的嵌入式系统,只使用随 Android 发布但没有启动器的设备。

我想在我的应用程序启动的情况下启动 Android,拒绝关闭它并从我的应用程序中关闭 Android。

最佳答案

基本上,您正在尝试自定义构建 AOSP,其中“主页”是您的应用程序。如果您查看 /packages/apps/Launcher2,您会发现默认主屏幕的代码。

如果您查看其中的 AndroidManifest.xml 文件,您会看到如下内容:

     <activity
        android:name="com.android.launcher2.Launcher"
        android:launchMode="singleTask"
        android:clearTaskOnLaunch="true"
        android:stateNotNeeded="true"
        android:theme="@style/Theme"
        android:screenOrientation="nosensor"
        android:windowSoftInputMode="stateUnspecified|adjustPan">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.MONKEY"/>
        </intent-filter>
    </activity>

本质上,这表示这个 Activity 对

android.intent.category.HOME intent.

当系统完成启动(更具体地说是 ActivityManager)时,发送该 Intent 。因此,如果您希望您的应用程序启动而不是启动器,只需为自己创建一个具有类似 Intent 过滤器的应用程序并删除默认的 Launcher2(将其从 build/target/product/generic.mk 中的列表中删除)/em> 并把你的代替)。还要确保相关的 .mk 文件有这样的内容:

LOCAL_OVERRIDES_PACKAGES := Home

只要您的应用程序不为用户提供使用图标启动其他应用程序的方式(如 Launcher 那样),就不会启动其他应用程序;当然,除非某些东西从您的应用控制的路径之外的其他路径发送 Activity 启动 Intent - 例如通过在目标的 Android shell 上使用“am”命令。

关于android - 如何仅使用一个应用程序制作嵌入式 Android 操作系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11312576/

相关文章:

使用 if 语句进行编译时配置

android - 下载多个文件 : DownloadManager or AsyncTasks

单击应用程序图标打开时,Android 应用程序会重新启动

java - Android SDK跨平台

linux - 谁初始化flash?

c - PIC32与RTC集成

c - 在嵌入式系统中从汇编语言切换到 C 语言

android - 无法从 fragment 中获取父 View

android - setFragmentResult 在单击监听器上不起作用

c - 什么是 .axf 文件?