Android:停止返回按钮退出 LockTask / Kiosk 模式

tim*_*oen 6 java android kiosk-mode device-admin

我想实现一个KioskMode,我只针对Android L,因为这是一个非常具体的应用程序。

我已经完成了将我的应用程序设置为 DeviceAdmin 的过程,并且 DevicePolicyManager.isLockTaskPermitted(this.getPackageName())已经返回true.

然后我开始一个LockTaskvia startLockTask()

一切都很好,但是当我按住 时backbutton,应用程序仍会退出自助服务终端模式。

我已覆盖onKeyPress以显示用于解锁应用程序的自定义对话框,但这并不妨碍 android 在用户按下时自动退出我的锁定任务。

我现在真的不知道该怎么做,我会很感激每一个输入。

我现在已经覆盖

@Override
public boolean onKeyDown(int KeyCode, KeyEvent event)
{
    if(KeyCode == KeyEvent.KEYCODE_BACK)
    {
        BackDownButtonPressed = true;
        if(VolDownPressed)
            showTaskLockDialog();
        return true;
    }
    else if(KeyCode == KeyEvent.KEYCODE_VOLUME_DOWN)
    {
        VolDownPressed = true;
        if(BackDownButtonPressed)
            showTaskLockDialog();
        return true;
    }
    return  super.onKeyDown(KeyCode, event);
}

@Override
public boolean onKeyUp(int KeyCode, KeyEvent event) {
    if(KeyCode == KeyEvent.KEYCODE_BACK)
    {
        BackDownButtonPressed = false;
        return true;
    }
    else if(KeyCode == KeyEvent.KEYCODE_VOLUME_DOWN)
    {
        VolDownPressed = false;
        return true;
    }
    return super.onKeyUp(KeyCode, event);
}

@Override
public void onBackPressed()
{
    return;
}

@Override
public boolean onNavigateUp() {
    return true;
}

@Override
public boolean dispatchKeyEvent (KeyEvent event)
{
    if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
        return true;
    }
    return true;
}

@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        //do something or nothing in your case
        return true;
    }
    return super.onKeyLongPress(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)

作为记录,我使用的是带有 Cyanogenmod CM12.1 的三星 SM-T700 平板电脑

tim*_*oen 2

就为了结束这个话题..

直到今天我还没有找到完美的解决方案。我当前的解决方法是,如果用户离开信息亭模式并再次进入信息亭模式,则会接收一个事件。

遗憾的是,这给用户留下了 2 个提示:“屏幕已取消固定”和“屏幕已固定”,这是不幸的。但这已经满足了我目前的需求。

  • 当用户离开信息亭模式时如何获取事件?如果用户长按后退按钮应用程序退出信息亭模式,我目前面临问题。任何避免它的解决方法。 (2认同)