【问题标题】:Android Running app on reboot causing android default home screen not activateAndroid 重新启动时正在运行的应用程序导致 android 默认主屏幕未激活
【发布时间】:2021-12-09 22:19:03
【问题描述】:

所以我有一个应用程序,我希望它在设备重新启动时立即运行。为了实现这一点,我在 MainActivity 中添加了 home 和默认类别。

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

但是,由于默认主屏幕未启动,因此执行此操作后,需要单击主页按钮两次才能返回主屏幕。我知道我可以通过监控主页按钮点击操作来处理这个问题。

override fun onAttachedToWindow() {
    super.onAttachedToWindow()
    this.window.setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
}

override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
    if (keyCode == KeyEvent.KEYCODE_HOME) {
        //open defualt home screen intent
    }
    return super.onKeyDown(keyCode, event)
}

但是,如果用户转到其他地方(比如说从状态栏打开设置),则单击主页按钮。这个问题会再次发生。

因此有没有办法避免这种情况?也许考虑在设备重启时在后台运行默认主屏幕,但老实说我不知道​​解决方案。

【问题讨论】:

    标签: java android kotlin


    【解决方案1】:

    将自己设置为 HOME 意味着您声称自己是启动器应用程序 - 替代主屏幕。同时运行 2 个启动器应用程序会使系统感到困惑。不要那样做。如果要在启动时启动,请使用 BOOT_COMPLETE 侦听器并从中启动 Activity。仅当您正在编写替代主屏幕或信息亭应用时才应使用您使用的方法。

    【讨论】:

    • 所以我的要求是写一个kiosk应用,这就是我实现上述代码的原因。但我也希望允许用户在离开应用程序后作为普通设备使用。因此它带来了这个问题。 BOOT_COMPLETE 只会在广播接收器上触发,并导致系统在默认主页上停留几秒钟,这是我不想要的。我能想到的唯一可能的解决方案是找到一种在后台运行默认主屏幕的方法,但没有任何有用的解决方案。你对此有什么想法吗?
    • 是否要求您的应用程序在手机启动后立即运行?如果上一个问题的答案是否定的,那么考虑使用 Lock Task Mode 代替您当前的实现来创建一个允许用户锁定应用程序的信息亭应用程序并在特定条件下退出。代码示例:start lock task mode
    • @RanZhang 我的评论对你有用吗?
    • 很抱歉,答案是肯定的。在我的应用开始运行之前,我需要防止用户看到任何其他屏幕。
    猜你喜欢
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多