我想執行KioskMode
,我只針對Android L
,因爲這是一個非常特定的應用程序。Android:停止退出LockTask/Kiosk模式的按鈕
我已經完成了將我的應用程序設置爲DeviceAdmin的過程,並且 DevicePolicyManager.isLockTaskPermitted(this.getPackageName())
已經返回true
。我通過startLockTask()
開始LockTask
。
一切都很好,但是當我按住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);
}
爲了記錄在案,我使用的是三星SM-T700平板電腦的CyanogenMod CM12.1
你重寫了onBackPressed()嗎? –
是的,我做了,不難改變這個問題 – timschoen
你是否能夠打開後退按鈕上的對話框? – Radhey